0

我正在开发一个使用带有表单身份验证的 ASP.NET 2.0 成员资格和角色提供程序的 Web 应用程序。系统中有各种角色。我需要一个用户角色,它本质上是一个超级用户,可以作为任何用户帐户“登录”(实际上是模拟用户)。

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

我正在考虑的一种方法是注销超级用户并以所需用户身份登录

FormsAuthentication.SetAuthCookie(username, false);

并在他们的 Session 中添加一个变量以将他们标记为超级用户。我认为这会起作用,但我只是想知道是否有更聪明的方法可以在不直接使用 Session 对象的情况下做到这一点?

4

3 回答 3

0

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

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

我希望我写的有意义...

于 2009-02-25T15:44:42.040 回答
0

Asp.net 方法不支持该概念,因此您尝试寻找替代方法是正确的。您可以做的是将 IsSuperUser 信息添加到身份验证票证 UserData 属性。

于 2009-02-25T17:12:53.637 回答
0

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

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

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

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

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

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

于 2013-03-28T11:11:34.013 回答