我可以在不使用会员资格的情况下使用user.IsInRole吗?

时间:2010-02-17 16:10:17

标签: asp.net asp.net-mvc

我正在使用表单身份验证,我想使用角色,我可以以某种方式设置没有成员资格的用户的角色吗?

4 个答案:

答案 0 :(得分:5)

一种简单的方法是在用户通过身份验证时将角色列表存储在身份验证票证中。然后,对于global.asax文件的每个请求(Application_AuthenticateRequest方法),您将提取角色,将它们添加到GenericPrincipal对象并设置Httpcontext.User属性。

您的User.IsInRole("role")[AuthorizeAttribute(Roles="role")]将正常工作。

有关如何操作的详细信息,请参阅this answer

答案 1 :(得分:1)

您的意思是“不使用ASP.NET的标准成员资格实施”吗?

如果是,那么是的,您可以通过实施自己的会员和/或角色提供商。有关如何实施成员资格/角色提供程序的详细信息,请参阅herehere

答案 2 :(得分:1)

是的,你可以。

唯一需要注意的是,角色不能与匿名用户一起工作(我会想到这很明显),你需要一些机制来设置用户的身份(可以是你喜欢的任何东西)。

MSDN文章:

Understanding Role Management

包含以下信息:

  

但是,角色管理没有   取决于会员资格。只要你   有一种方法可以在你的应用程序中设置   用户身份,您可以使用角色   管理授权。

答案 3 :(得分:1)

您无需实施整个会员提供商。

创建自己的Principal(具有IsInRole方法)和Identity
然后确保您的用户对象(HttpApplication.Context.User)在每个请求中填充了您的主体。
完成。现在Authorize属性将与您的校长交谈。