加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 基于角色的模型列表授权

发布时间:2020-12-16 03:48:21 所属栏目:asp.Net 来源:网络整理
导读:我有3个型号[用户,角色和用户角色] Use {ID [PK],Name,Email,Password,.....}Role {ID [PK],Description,.......}UserRole {UserID [FK],RoleID [FK]} 考虑使用[Authorize]属性在控制器上进行基于角色的授权,指定用户必须具有管理员角色才能访问类中的任何控
我有3个型号[用户,角色和用户角色]

Use {ID [PK],Name,Email,Password,.....}
Role {ID [PK],Description,.......}
UserRole {UserID [FK],RoleID [FK]}

考虑使用[Authorize]属性在控制器上进行基于角色的授权,指定用户必须具有管理员角色才能访问类中的任何控制器操作

[Authorize(Roles = "Administrator")]
public class PageController : Controller
{
    // Controller code here
}

这很好,我需要的是,

有没有办法将我的角色集合分配给[授权]属性?例如

我将从登录用户中获取已分配的角色并将其存储在列表中.是否可以将此列表分配给[授权]属性?如下所示:

[Authorize(Roles = MyDynamicallyLoadedList)]
public class PageController : Controller
{
    // Controller code here
}

解决方法

好吧,有两个问题.

首先,您不能将List用作Attribute的参数.您可以使用数组.
http://msdn.microsoft.com/fr-fr/library/ms177221%28v=vs.100%29.aspx

其次,必须在编译时知道属性参数的值:列表的内容仅在运行时才知道.

你会得到一条消息:

An attribute argument must be a constant expression,typeof expression
or array creation expression of an attribute parameter type

解决方案是创建一个新的Authorization属性(继承自AuthorizeAttribute),并覆盖AuthorizedCore

一个例子(你可以适应你的问题)可以找到here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读