【发布时间】:2012-04-20 13:48:55
【问题描述】:
我正在尝试使用角色进行表单身份验证,我有 global.asax Application_AuthenticateRequest 方法从 cookie 中获取角色,效果很好。但我不知道在 Web.Config 中配置什么提供程序。我不想使用 SQL 服务器,只使用 cookie。
这一行创建了 IPrincipal:(roles 是一个带有角色的字符串数组)
Context.User = new GenericPrincipal(Context.User.Identity, roles);
最终目标是让 DataAnnotations 像 [Authorize(Roles = "Admin")] 和 IsInRole 方法正常工作。
此外,IsInRole 方法在 global.asax 中使用时效果很好,但在其他地方则不行。为什么不呢?
Web.config 目前配置如下:
<roleManager defaultProvider="DefaultRoleProvider" cacheRolesInCookie="true">
很遗憾,DefaultProvider 无缘无故地连接到了一些空的 SQL 数据库。
这可能吗?
谢谢。
【问题讨论】:
-
使用此处第二个答案中的代码从 cookie 中获取角色:stackoverflow.com/questions/1385042/…
-
原来是 Visual Studio 中的错误或导致问题的原因。当 Web 应用程序没有任何问题时,我上面提到的帖子中的代码按原样工作。
标签: asp.net asp.net-mvc-3 roles