实体框架 – 为什么没有[Authorize(Roles =“Admin”)]在具有ASP.NET身份的MVC 5 RTM中工作?

[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中的声明不会自动更新.相反,只有数据库已被更新,应用程序必须重新认证它们,然后再将旧的声明替换为包含管理员角色成员身份的新声明.让用户手动退出并重新登录,是重新验证该用户的最明显的方式.

这是Using Claims in ASP.NET Identity的一篇文章

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....