ASP.NET Membership/Roles/FormsAuth - 如何以超级用户身份登录?

问题描述:

我正在使用ASP.NET 2.0成员和角色提供程序与表单身份验证的Web应用程序。系统中有各种角色。我需要一个用户角色,它本质上是一个超级用户,可以像任何用户帐户一样“登录”(实际上模拟用户)。ASP.NET Membership/Roles/FormsAuth - 如何以超级用户身份登录?

有谁知道这是可能的使用提供者?有任何想法吗?

一个方法,我想的是,注销超级用户,并与

FormsAuthentication.SetAuthCookie(username, false); 

签署,并将其作为目标用户并添加变量到他们的会话来将它们标记为超级用户。我认为这可行,但我只是想知道是否有一个更直接使用Session对象的更聪明的方法?

Asp.net方法不支持这一概念,所以你是对上试图找到一种替代方法。 您可以执行的操作是将IsSuperUser信息添加到身份验证票据UserData属性。

+0

谢谢弗雷迪,我想我会跟这个建议去。将这些信息存储在身份验证票证中似乎是最正确的地方。 – 2009-02-26 09:21:45

为什么你没有可以做任何事情的超级用户角色?那么用户可以只是该角色的一部分。

如果你真的需要的是管理员冒充别人的能力,我不知道什么是额外的标志?如果它标志着当前登录的用户给予他超级权力,那么通过设置角色就可以实现同样的功能。但是,如果您需要模仿其他人(例如,这是服务台,并且您需要看到与最终用户完全相同的内容) - 我通常会检查凭据,然后检查超级用户是否正在登录,以及他们想要模仿,并基于这一点只是认证登录用户作为他愿意模仿的用户。

我希望我写的是有道理的......

+0

帕维尔嗨。感谢您的反馈意见。我可能没有正确解释它 - 该网站使用个性化,以便每个用户的视图不同,这是通过使用HttpContext.Current.User.I需要这是登录的用户,但也知道它是一个超级用户。 – 2009-02-25 16:00:33

这是我会做的。对不起,没有图形,在这里躺在床上的ipad ...

1)使用基于声明的架构。它很容易实现,看我的项目。

2)基本上是模拟的用户都会对索赔主要对象的第二身份,但将有不同的境界(境界可能是错的字,你用它来创建身份)

3)可以构建字符串模仿用户的身份并手动构建他们的声明....他们应该立即写入令牌。我会看一个通用的声明Transformer类来做到这一点。

4)您可能需要根据模拟身份的存在来调整网站的行为方式,但这就是有趣的部分。

工作WIF实现 https://github.com/wcpro/scaffr-generated