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

时间:2009-02-25 15:35:05

标签: asp.net-membership

我正在开发一个使用ASP.NET 2.0 Membership和Roles提供程序以及Forms Authentication的Web应用程序。系统中有各种角色。我需要拥有一个基本上是超级用户的用户角色,可以“登录”任何用户帐户(实际上模仿用户)。

是否有人知道使用提供商是否可行?有什么想法吗?

我想到的一种方法是注销超级用户并将其作为所需用户进行签名

FormsAuthentication.SetAuthCookie(username, false);

在Session中添加一个变量,将它们标记为超级用户。我认为这样可行,但我只是想知道如果没有直接使用Session对象,是否有更聪明的方法呢?

3 个答案:

答案 0 :(得分:0)

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

如果您真正需要的是管理员冒充他人的能力,我不知道附加标志是什么?如果它标记当前登录的用户给予他超级权力,则通过设置角色将实现相同的目的。但是,如果您需要冒充其他人(例如,这是帮助台,您需要看到与最终用户看到的完全相同) - 我只是检查凭据,然后检查超级用户是否登录以及谁他们想冒充并基于这种情况,只是将用户登录认证为他愿意冒充的人。

我希望我写的内容有道理......

答案 1 :(得分:0)

Asp.net方法不支持这个概念,因此您正试图寻找替代方法。 您可以执行的操作是将IsSuperUser信息添加到身份验证票证UserData属性。

答案 2 :(得分:0)

这是我要做的。对不起没有图片,在床上的ipad上...

1)使用基于声明的架构。它易于实现,请参阅我的项目。

2)基本上模仿的用户将在声明主体对象上拥有第二个身份,但会有不同的域(域可能是错误的词,你用来创建身份的字符串)

3)您可以构建模拟用户的身份并手动构建他们的声明....他们应该立即写入令牌。我会看一个通用的Claims Transformer类来做这件事。

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

正在实施WIF https://github.com/wcpro/scaffr-generated