文档章节

3.osframe框架权限开发说明

王春-海子
 王春-海子
发布于 2016/06/30 16:20
字数 1563
阅读 124
收藏 7

开源项目名称:
    osframe管理系统
托管地址:
    http://git.oschina.net/haizicq/osframe
主要技术:
    spring mvc、spring、hibernate、angular js、seajs、bootstrap、shiro
框架介绍:
    本框架是一个基础后台开发框架,基于springmvc+spring+hibernate搭建,前端采用angular js+sea js +bootstrap展现,基于shiro的权限管理和登陆控制。基础框架中包含了用户管理、权限管理等基础模块,提供了简单的首页门户,可以快速的实现新项目的搭建。
框架特色:
    支持电脑和手机界面的自动智能切换。
技术交流群:
    330710190(OSFrame技术交流群) 欢迎大家加入,共同探讨使用过程中的问题。

1、权限基本原理
    权限基于shiro实现,采用注解的方式对方法标准功能权限,待发布后通过手动导入到系统中,而无需一个个功能权限的配置。然后将功能权限配置到角色上。
    权限实现的目标:每个模块用于默认权限和管理员权限,模块下的所有实体拥有增删改查统一的权限控制,也可以对模块下单个实体设置独立的增删改查权限控制,还可以设置增删改查为同一个权限一起控制。
2、权限定义
    在web层的contorller类上增加@RequiresClassAuth以及在方法上增加@RequiresAuth注解,即可实现类和方法层面的权限控制。然后再在国际化资源文件中定义好每个权限的名称即可。
    1)@RequiresClassAuth 注解属性详解
        common:针对基类的增删改查采取的策略,默认是子类中前缀覆盖
            可选值:
            a、RequiresClassAuth.CommonType.DEFAULT:默认类型,子类中对增删改查分别使用不同的权限控制,控制方式由权限前缀rolePref加上对应的增删改查权限,如果rolePref未指定则按默认规则生成权限:ROLE_模块路径_,如用户管理模块按这个规则生成的权限为:ROLE_CORE_USERS_ADD(新增权限)、ROLE_CORE_USERS_EDIT(编辑权限)、ROLE_CORE_USERS_LOOK(查看权限)、ROLE_CORE_USERS_DELETE(删除权限)
            b、RequiresClassAuth.CommonType.CONTROL:整个类使用同一个权限控制,权限由role指定,如未指定则由模块管理员权限控制
        role:针对类给予的默认权限,如果方法已经设置了权限则类层面的默认权限无效
        rolePref:权限前缀,用于定义自定义的权限名称,当common选值为CONTROL时这个设置无效
    2)@RequiresAuth 注解属性详解
        role:权限名称,基类BaseController中的名称只是权限后缀
        seat:方法所在位置,主要用于标注基类BaseController中的方法,可选值为:RequiresAuth.SeatType.COMMON(基类中)、RequiresAuth.SeatType.DEFAULT(默认非基类中)
        type:权限的校验类型,这事针对数据拦截权限的类型,可选值: RequiresAuth.RoleType.NONE(不做数据过滤)、 RequiresAuth.RoleType.READER(仅允许设置的可查看人员)、 RequiresAuth.RoleType.EDIT(仅允许设置的可编辑人)、 RequiresAuth.RoleType.DOWN(仅允许设置的可下载者)
        returnType:方法返回类型,用于标识返回的是json还是页面,用途是当没有权限时设置不同的返回方式供解析,以便出现问题。这里是根据spring mvc的返回类型来设置的,可选值有:
            RequiresAuth.ReturnType.DEFAULT:默认,根据返回类型智能分析返回
            RequiresAuth.ReturnType.ModelAndView:spring的modelandview返回类型
            RequiresAuth.ReturnType.JSON:返回json
            RequiresAuth.ReturnType.String:返回字符串当有ResponseBody注解的方法会返回json,否则返回页面路径
        id:在url中获取id参数,用于数据拦截,默认取:id或pkId
    3)国际化名称输入,针对每个权限设置其.name和.info的国际化描述。
        默认权限和管理员权限:这2个权限是每个模块基本权限,所以必须设置,不设置在导入权限会出错,如DEMO模块权限:
            ROLE_OS_DEMO_ADMIN.name=测试模块_管理员权限
            ROLE_OS_DEMO_ADMIN.info=拥有该权限可以对测试模块的所有功能进行管理
            ROLE_OS_DEMO_DEFAULT.name=测试模块_默认权限
            ROLE_OS_DEMO_DEFAULT.info=拥有该权限才可以对测试模块拥有使用权限
        增删改查权限:这个不一定必须,如果模块所有实体设置为统一权限控制RequiresClassAuth.CommonType.CONTROL的话,则不需要,如权限控制模块则不需要。 不过一般还是推荐写上,如DEMO模块的:
            ROLE_OS_DEMO_ADD.name=测试模块_添加权限
            ROLE_OS_DEMO_DELETE.name=测试模块_删除权限
            ROLE_OS_DEMO_LOOK.name=测试模块_查看权限
            ROLE_OS_DEMO_EDIT.name=测试模块_编辑权限
            ROLE_OS_DEMO_ADD.info=拥有该权限才可以对用户管理模块进行新增
            ROLE_OS_DEMO_DELETE.info=拥有该权限才可以对测试模块进行删除
            ROLE_OS_DEMO_LOOK.info=拥有该权限才可以对测试模块进行查看
            ROLE_OS_DEMO_EDIT.info=拥有该权限才可以对测试模块进行编辑
        其他设置的权限:根据业务需要自己配置的权限,如RequiresClassAuth配置了role的,当rolePref配置的情况,可能需要针对这个前缀将对应的增删改查后缀的权限都设置一遍。
3、权限导入
    进入权限模块,登陆后点击权限模块即可。
    点击右侧导航上的权限导入按钮,就会把自己新增的权限导进来,不会重复的导入。


4、权限管理
    进入权限模块,登陆后点击权限模块即可。
    1)创建角色分组
        点击导航上的管理按钮,根据需要创建角色组。创建后刷新下页面会看到角色下方增加了刚刚配置的角色组。
    2)创建角色和权限授权
        点击刚刚配置的角色组,右侧会展示角色组下的角色列表,点击新建创建角色,创建角色的时候直接可以设置权限和授权人员

© 著作权归作者所有

王春-海子
粉丝 7
博文 49
码字总数 11981
作品 0
江北
技术主管
私信 提问
Winform开发框架之插件化应用框架实现

支持插件化应用的开发框架能给程序带来无穷的生命力,也是目前很多系统、程序追求的重要方向之一,插件化的模块,在遵循一定的接口标准的基础上,可以实现快速集成,也就是所谓的热插拔操作,...

walb呀
2017/12/04
0
0
proxy/SignProxyService

签名代理服务 签名代理服务(Sign Proxy Service),是用于WEB无插件访问USBKEY的客户端代理服务。该服务基于Windows,采用C++开发。 开发平台 操作系统: Windows 10 64-bit 开发语言: C++ ...

proxy
2015/12/08
0
0
RDIFramework.NET—.NET快速开发整合框架【开发实例】之产品管理(WinForm版)

接前两篇: RDIFramework.NET (.NET快速信息化系统开发整合框架) 【开发实例】之产品管理(WebForm版) RDIFramework.NET (.NET快速信息化系统开发整合框架) 【开发实例】之产品管理(M...

NET快速开发框架
2018/07/12
0
0
NodeWk 1.0.3 发布,Node 企业级开源开发框架

NodeWk,是基于sails.js框架开发的,企业级开源开发框架,主要实现了权限系统、系统管理、微信模块、简单的CMS模块、API Token等基础功能,基于NodeWk 你可以快速构建自己的项目,快速上手开...

Wizzer
2016/12/06
2.7K
12
快速web开发框架——learun framework

一个好的web技术框架往往与他速度有关,他需要帮助程序员尽可能快的完成项目的同时确保它的安全性,力软敏捷框架是基于.net语言的web+ORM开发框架,其核心开发目标是开发迅速,代码少,学习简...

力软信息
01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部