[Authorize(Roles =“Admin”)]是否在MVC 5 RTM中与
ASP.NET Identity开箱即用?
我没有运气.请注意,[Authorize]和[Authorize(Users =“AdminUser”)]工作正常,AspNetUserRoles和AspNetRoles表格按照我们期望的方式进行填充,建立AdminUser用户和Admin角色之间的关系.这个问题似乎特定于角色.
解决方法
用户可能需要重新身份验证才能接收包含管理员角色成员资格的新声明.由于MVC 5在开箱即用的情况下使用ASP.NET身份认证,默认情况下,MVC 5中的ASP.NET身份存储在用户Cookie中声称的角色,这些信息可能会变得陈旧(因此数据库表示有一件事,但用户的Cookie表示别的东西)重新认证用户将刷新他们的声明,包括用户角色声明,以匹配数据库的当前状态.
例如:
如果用户在数据库中分配给管理员角色之前登录,用户将被授予权限,但不会将其分配给管理员角色.如果稍后将它们添加到管理员角色中,则存储在其Cookie中的声明不会自动更新.相反,只有数据库已被更新,应用程序必须重新认证它们,然后再将旧的声明替换为包含管理员角色成员身份的新声明.让用户手动退出并重新登录,是重新验证该用户的最明显的方式.