我正在开发一个使用ASP.NET 2.0 Membership和Roles提供程序以及Forms Authentication的Web应用程序。系统中有各种角色。我需要拥有一个基本上是超级用户的用户角色,可以“登录”任何用户帐户(实际上模仿用户)。
是否有人知道使用提供商是否可行?有什么想法吗?
我想到的一种方法是注销超级用户并将其作为所需用户进行签名
FormsAuthentication.SetAuthCookie(username, false);
在Session中添加一个变量,将它们标记为超级用户。我认为这样可行,但我只是想知道如果没有直接使用Session对象,是否有更聪明的方法呢?
答案 0 :(得分:0)
为什么你没有可以做任何事情的超级用户角色?然后,用户可以只是该角色的一部分。
如果您真正需要的是管理员冒充他人的能力,我不知道附加标志是什么?如果它标记当前登录的用户给予他超级权力,则通过设置角色将实现相同的目的。但是,如果您需要冒充其他人(例如,这是帮助台,您需要看到与最终用户看到的完全相同) - 我只是检查凭据,然后检查超级用户是否登录以及谁他们想冒充并基于这种情况,只是将用户登录认证为他愿意冒充的人。
我希望我写的内容有道理......
答案 1 :(得分:0)
Asp.net方法不支持这个概念,因此您正试图寻找替代方法。 您可以执行的操作是将IsSuperUser信息添加到身份验证票证UserData属性。
答案 2 :(得分:0)
这是我要做的。对不起没有图片,在床上的ipad上...
1)使用基于声明的架构。它易于实现,请参阅我的项目。
2)基本上模仿的用户将在声明主体对象上拥有第二个身份,但会有不同的域(域可能是错误的词,你用来创建身份的字符串)3)您可以构建模拟用户的身份并手动构建他们的声明....他们应该立即写入令牌。我会看一个通用的Claims Transformer类来做这件事。
4)您可能需要根据模拟身份的存在来调整网站的行为方式,但这就是有趣的部分。