开源项目名称:
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)创建角色和权限授权
点击刚刚配置的角色组,右侧会展示角色组下的角色列表,点击新建创建角色,创建角色的时候直接可以设置权限和授权人员
来源:oschina
链接:https://my.oschina.net/u/2351717/blog/703468