3.osframe框架权限开发说明

纵饮孤独 提交于 2020-03-02 18:34:51

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!