我正在努力为ASP.NET MVC应用程序添加授权,并遇到了障碍.我终于能够将我们的自定义成员资格提供程序连接起来,并为该应用程序进行身份验证.现在,正如预期的那样,如果我将[Authorize]属性添加到我的控制器,则必须对用户进行身份验证才能查看该页面.我还成功测试了[Authorize(Users ="{userName}")],它也可以将页面限制为该特定用户.
问题是[Authorize(Roles ="{RoleName}")]似乎没有像我期望的那样工作.如果我将该属性添加到控制器,只要我尝试访问相应的页面,我就会被重定向到我们的登录页面.如果用户没有所需的角色,这就是我期望发生的事情,但即使用户具有该角色,也会发生这种情况.我在View,Controller和Helper方法中检查了User.IsInRole("{roleName}")和HttpContext.Current.User.IsInRole("{roleName}"),这总是返回'False'.
我已经验证我正在使用的用户具有我试图授权的角色.我还在WebForms应用程序中测试了这些用户,这些应用程序限制了相同角色的页面访问,并且工作正常.我认为我在某处设置了错误或者遗漏了一些简单的东西,但是在整个上午搜索之后,我没有找到任何让我更接近解决方案的东西,所以我希望有人可以帮助我.
首先:使用探查器,并在执行 HttpContext.Current.User.IsInRole("{roleName}") 行时,检查 sql 查询是什么。
如果它没有进行查询,那么您可能有cacheRolesInCookie =“true”,并且IsInRole将检查FormsAuthenticationTicket中的UserData。确保在创建 FormsAuthenticationTicket 时将 userdata 参数设置为包含用户角色的逗号分隔字符串。
归档时间: |
|
查看次数: |
13063 次 |
最近记录: |