我有ASP.NET的MVC4应用程序。我使用简单的会员提供程序,允许勾选登录表单下的“记住我”复选框。如果勾选,将创建自登录日期起100天后过期的永久cookie .ASPXAUTH。除了应用程序的主菜单之外,一切都运行正常。
菜单的某些部分仅对管理员用户可用。我使用:
@if (User.IsInRole("Administrator")) { @Html.Partial("_MainMenuPartial") }锁定它们,使其不能为普通用户呈现。此方法在登录到系统后即可正常工作。当我在一段时间后返回,并且使用持久性cookie对我进行身份验证时,我确实会登录,但是
@User.IsInRole("Administrator")返回"False“,因此我看不到管理菜单项。在同一时间
@User.Identity.Name返回正确的登录名和
@User.Identity.IsAuthenticated返回"True",证明持久化cookie工作正常。为什么我不能访问用户角色,即使用户已经通过系统验证?
发布于 2014-10-30 22:05:35
我有个笑脸问题。在我的例子中,当我注销并重新登录时,问题就解决了。
发布于 2015-07-10 02:54:31
在MVC5中使用角色时出现问题
我找到了一个解决方案。在我的web.config中:
<modules>
<remove name="FormsAuthenticationModule" />
<remove name="RoleManager" />
</modules>我添加了remove name="RoleManager“行,新的AspNet.Identity代码接管了我的工作,允许我使用User.IsInRole(..)
http://forums.asp.net/t/1952572.aspx?Problem+using+roles+with+MVC5
发布于 2016-05-24 19:06:59
老问题,但这里有一些缺失的信息。我遇到了同样的问题,有一件事要牢记在心。如果你在认证之后测试用户身份(如User.IsInRole("admin")) (而不向客户端发送响应),身份框架还没有填充这个会话信息(或者至少,我找不到这样做的方法)。你请求的这些信息会在你的控制器返回后的某一时刻被填充。如果你愿意(也就是)要在登录后根据用户角色重定向到不同的视图,您必须使用自定义授权筛选器。
https://stackoverflow.com/questions/15567338
复制相似问题