.NET MVC 中的权限控制

本文介绍了在.NET MVC中实现权限控制的一种方法。通过设计用户-角色-权限的数据库表结构,允许用户属于多个角色,并在代码中使用ActionFilterAttribute进行权限验证。当权限变更时,只需在数据库中更新,而不需要修改代码。用户登录后,权限信息存储在Session中,自定义的过滤器检查用户角色是否有执行Action所需的权限,否则重定向到错误页面。
摘要由CSDN通过智能技术生成

数据库表结构

 

 

 

用户是属于1~n个角色的,当然也可以设计成用户是属于0~n个角色的,
然后在代码中对所有人都能做的操作不做权限判断.

例如你去公园玩,会给你发一张门票
一种情况是上面显示所有可玩的项目(含免费和收费).
所有项目的游戏入口处都有人查票.

另一种情况是公园管理者只在门票上列上所有你可玩的收费项目,
没人查票的游戏入口处代表它是免费的(摩天轮的游戏入口处没有人查票)

那么,当有一天摩天轮变为了收费项目,第二种管理方案要做怎么样的改变呢?
1.摩天轮的游戏入口处要有人把守(对应于代码就是以前不判断权限的地方现在要做权限控制)
2.门票上的摩天轮要显示成可玩项目,为收费项目(对应于代码就是权限表插一条数据,同时将此权限添加到特定范围的角色)

第一种的改变呢?不用做任何修改

所以对于所有人都有权限的操作分配一个默认角色的好处是:
1 可以查看普通用户所拥有的普通权限(不必到代码中去看没做权限判断的就是普通用户可做的操作).
2 可以方便地在数据库中将普通权限变为高级权限.
3 可以方便地在数据库中将高级权限变为普通权限
4 权限判断的逻辑统一,代码不做任何更改就可以实现权限的变动.

 

 

用户登陆后得到其角色和权限,存放到Session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值