开源项目名称:
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技术交流群) 欢迎你们加入,共同探讨使用过程当中的问题。前端
一、权限基本原理
权限基于shiro实现,采用注解的方式对方法标准功能权限,待发布后经过手动导入到系统中,而无需一个个功能权限的配置。而后将功能权限配置到角色上。
权限实现的目标:每一个模块用于默认权限和管理员权限,模块下的全部实体拥有增删改查统一的权限控制,也能够对模块下单个实体设置独立的增删改查权限控制,还能够设置增删改查为同一个权限一块儿控制。
二、权限定义
在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配置的状况,可能须要针对这个前缀将对应的增删改查后缀的权限都设置一遍。
三、权限导入
进入权限模块,登录后点击权限模块便可。
点击右侧导航上的权限导入按钮,就会把本身新增的权限导进来,不会重复的导入。git
四、权限管理
进入权限模块,登录后点击权限模块便可。
1)建立角色分组
点击导航上的管理按钮,根据须要建立角色组。建立后刷新下页面会看到角色下方增长了刚刚配置的角色组。
2)建立角色和权限受权
点击刚刚配置的角色组,右侧会展现角色组下的角色列表,点击新建建立角色,建立角色的时候直接能够设置权限和受权人员web