MVC中权限管理
2016-08-24 09:33
253 查看
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。权限管理还是比较复杂的,有的固定到某个模块,某个操作,甚至是某个按钮,总之想要做好一个权限管理,真的很不容易,一直在探索当中,全当抛砖引玉;看到网上好多关于权限管理的文章,以前也写过简单的文章,今天楼主我也要总结整理一下自己的实现方法,毕竟一千个读者就有一千个哈姆雷特,说说自己的详细实现、基本设计和基本思想希望帮到入门的新人们。
一、基本的数据库表设计
基本的表设计如图,用户表、角色表、模块表、权限表和用户角色关系表、角色模块权限关系表,某个用户的角色(管理员、用户等),然后再去判断对应角色的模块(新闻、文章等)权限(增、删、改、查)。
创建基本权限操作的SQL脚本:
?
二、代码中具体的实现
这是一个基类,所有的Controller都继承BaseController,[UserAuthorizeFilter(Order = 999)],每一个Action过滤器都有一个 Order 属性,用来决定Action过滤器在该范围内的执行顺序。Order属性必需是0(默认值)或者更大的整数值。省略Order属性则会给该过滤器的Order值为 -1, 表明为指明顺序。任何一个在同一范围的Action过滤器Order设为 -1 的都将按不确定的顺序执行,单在此之前过滤器有一个特定的顺序。登录的时候是存储的加密的Cookie,会有一个私钥(自己定义)。
?
Filter里面判断用户是否登录cb.IsLogin(),如果登陆验证通过还要验证是否对某个某个Controller对应的Action有操作权限。如果未登录或者发成错误底层会捕获,跳转到登陆页面或者是错误页。
?
用户的ID判断角色,然后把角色去查是否有这个权限,如果有进入,对应的controller 和action,如果没有则没权限。具体实现方法如下:
?
用户登录成功写入Cookie,然后浏览每个模块判断登录和具体某个模块的权限, 这算是一个最基本简单权限管理,适合新手入门用,大牛们觉的不合适的地方,或者更好的方法多多指导!
一、基本的数据库表设计
基本的表设计如图,用户表、角色表、模块表、权限表和用户角色关系表、角色模块权限关系表,某个用户的角色(管理员、用户等),然后再去判断对应角色的模块(新闻、文章等)权限(增、删、改、查)。
创建基本权限操作的SQL脚本:
?
这是一个基类,所有的Controller都继承BaseController,[UserAuthorizeFilter(Order = 999)],每一个Action过滤器都有一个 Order 属性,用来决定Action过滤器在该范围内的执行顺序。Order属性必需是0(默认值)或者更大的整数值。省略Order属性则会给该过滤器的Order值为 -1, 表明为指明顺序。任何一个在同一范围的Action过滤器Order设为 -1 的都将按不确定的顺序执行,单在此之前过滤器有一个特定的顺序。登录的时候是存储的加密的Cookie,会有一个私钥(自己定义)。
?
?
?
相关文章推荐
- 【217】◀▶ IDL 控制语句说明
- Linux系统中“动态库”和“静态库”那点事儿
- 暑期十测 round2
- ECSHOP调用商品一级分类
- React Native商城项目实战11 - 个人中心头部内容
- iOS 取消H5界面上的视频自动播放
- WebView 下拉刷新
- C++01背包-装箱问题
- 【MYSQL】数据库操作基础笔记
- iOS拨打电话的三种方式
- HDOJ-【Gym Class】
- iOS 中几种常用的定时器
- JQ点击展开二级菜单
- OpenCV中mat::copyto( )函数使用方法
- MTK Android 5.0以上版本的变化
- 充电送APP?火车站的这种充电桩太可怕了!
- java中+=是什么意思
- Terminator 四窗口配置文件
- [Derby]数据库操作说明
- Spring mvc中@RequestMapping 6个基本用法整理