如何在ASP.NET MVC中手动设置用户的角色?

我正在开展的这个项目要求我保留一个本地数据库管理员用户,并为常规用户使用一个外部数据库.在admin db中通过认证的任何人都应该被分配为“admin”角色,任何通过其他数据库认证的人员将始终被分配一个用户”角色.

我可以手动分配这些角色吗?我不需要角色提供者或任何东西的复杂性,因为我只使用这两个角色,这些角色将始终基于他们认证的数据库.

如果您可以提供示例代码或某些文档的链接,这将是一个巨大的帮助.谢谢!

编辑:

目前我没有使用角色提供者,并且创建一个似乎是一个麻烦.我知道它不是“最佳实践”,但我只需要在登录过程中分配2个角色中的1个(这绝对不会改变).将角色信息存储在数据库中也是没有意义的,因为用户已经通过角色将它们分成了2个dbs.

这里有一些伪代码

if (AdminDB.ValidateUser(username,password)==true) {
     SetAuthCookie(username);
     AssociateUserWithRole(username,'admin');
} elseif (UserDB.ValidateUser(username,'user');
} else {
     // Login Failed.
}

它的’ThisSession.AssociateUserWithRole’部分我不知道.基本上,一个用户被认证,我需要告诉.NET用户所属的角色.

解决方法

Implementing a role provider并不是特别困难 – 特别是如果你只是执行角色检查,而不是角色管理.只需要实现你需要的那些部分,剩下的就是NotImplementedExceptions.如果您只有一个应用程序,您也不必太关心该部分.请注意,您需要的部分将由框架如何使用它决定,而不是如何使用它.我认为,例如,您将需要实现返回所有用户角色的位,即使您只想检查它们是否处于特定角色.

也就是说,您可以省略整个RoleProvider并在会话中做整个事情.在这种情况下,您将实现自己的AuthorizeAttribute,并将其替换为您自己的身份验证和角色检查位.验证后将用户的角色存储在会话中,并使用您的属性和提供给您装饰它的方法/类的属性的参数进行检查.

相关文章

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