在各种后台系统中都会涉及到权限的管控,从功能权限的管控,到数据权限的管控,都是为了让系统的在使用的过程中更加的安全。功能权限管控是对针对不同的角色可以进行不同的功能操作,而数据权限管控是针对不同的角色可以查看不同的数据。这篇文章主要介绍 JeeSite 中对功能权限的管控,也就是访问控制权限的使用,关于数据权限的部分请参考:https://www.cnblogs.com/tosser/p/9281853.html 。

从手册开始

  JeeSite 开源项目集成了 shiro 这个权限控制框架,我本身不了解 shiro ,但是不了解 shiro 是不影响使用的 JeeSite 的功能权限管理的。先来看看 JeeSite 手册对权限这部分的介绍,引用手册内容如下图。

  从手册上看, JeeSite 的功能权限控制需要进行四个方面的设置,分别是给 Controller 的方法添加权限标志,在菜单中设置权限标识,在代码中判断权限,当然还有是在视图中添加权限标签。

给方法添加权限标志

  给方法添加标志这部分是至关重要的一步,它标志着访问该 Controller 方法时的权限,一般在使用代码生成工具时,默认会生成 view 和 edit 两种权限,分别对应着“查看”和“修改”的权限。在 Controller 中完全可以自己定义其他类型的权限,比如 import 、 export 等。

菜单中设置权限标志

  这一步是在添加菜单时完成的。添加菜单的页面如下:

  在添加菜单部分有四个比较重要的内容:

  • 名称:即菜单的名称;
  • 链接:菜单对应的 Controller ;
  • 可见:该项菜单是否可以见;
  • 权限标识:这个权限标识就是在 Controller 中定义的方法权限标志;

  一般在维护的时候,需要把菜单和权限分开,分开以后才能进行具体的权限赋值。如果是维护菜单的话,那么就维护“名称”和“链接”,然后“可见”为“显示”。添加好菜单后,在菜单的下级维护权限。维护权限的时候,需要维护“名称”和“权限标识”,不需要维护“链接”,“可见”维护为“隐藏”。维护完以后的菜单列表如下图所示。

判断权限和视图中控制按钮

  在视图中加入权限控制的判断,就会显示时会根据权限显示相关的内容,比如手册中的例子,代码如下:

 <shiro:hasPermission name="sys:user:edit">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;
</shiro:hasPermission>
<!-- 任何一个符合条件的权限 -->
<shiro:hasAnyPermissions name="sys:user:view, sys:user:edit,">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="返 回"/>&nbsp;
</shiro: hasAnyPermissions>

  上面的第一段例子代码会判断用户是否具备 “ sys:user:edit ” 的权限,如果具备这个权限,则会显示“保存”按钮,如果不具备这个权限是不会显示“保存”按钮的。
  第二段权限,则是任何一个符合条件的权限被满足,都会显示“返回”按钮。
  一般在视图上控制好权限,在代码中是不需要进行判断的。如果视图没有控制的话,那么在代码中进行一下判断。

  对于一个刚开始接触 Java 的新手,对于 JeeSite 的应用就掌握到这个程度了,有不对的,有问题的,欢迎讨论!


我的微信公众号:“码农UP2U”

JeeSite | 访问控制权限的更多相关文章

  1. public/private/protected访问控制权限的区别

    //public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...

  2. Java——private default protected public访问控制权限

    访问控制权限 protected范例

  3. Java 多态 父类和子类方法的访问控制权限

    Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...

  4. Java基础 -- 访问控制权限

    一  包:库单元 假设我们存在两个类名相同的类,如果没有一定的措施对其进行区分,就会无法区别到底使用的是哪一个类.因此java引入了包来进行名字空间管理. 包(类库)包含有一组类,这些类在单一的名字空 ...

  5. Cmd下修改文件访问控制权限

    保证自己的磁盘分区格式是NTFS.FAT32是不行的. 一.Cacls.exe命令的使用 这是一个在Windows 2000/XP/Server 2003操作系统下都可以使用的命令,作用是显示或者修改 ...

  6. Java面向对象-访问控制权限

    Java面向对象-访问控制权限 Java中,可以通过一些Java关键字,来设置访问控制权限: 主要有 private(私有), package(包访问权限),protected(子类访问权限),pub ...

  7. this、static、main方法、静态代码块、final关键字、Runtime类、Cloneable类、类成员的访问控制权限、异常体系

    this表示当前对象,用在方法内部,当某对象调用该方法时,该方法中的this就代表调用该方法的对象: static关键字: 修饰类属性后,该属性就成为该类所有实例的公共属性,修改该属性值,所有的实例的 ...

  8. Java访问控制权限

    在Java中一共存在四种访问控制权限,即 private.default(默认).protected和public 1.private 访问权限 private属于私有访问权限,可以用在属性的定义.方 ...

  9. TIJ摘要:访问控制权限

    重构的原动力之一:发现有更好的方式去实现相同的功能. OOP需要考虑的基本问题:如何把变动的事物与不变的事物区分开来. 访问控制权限:以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访 ...

随机推荐

  1. 关于Unity中AI随机巡逻障碍物预判与快速运动时物理穿透的思考

    如果不想用Unity的导航系统,很多时候就要解决如何预判前进路径中的障碍物问题,之前也看过一些非常经典的寻路算法例如AStar寻路,虽然也可实现功能,但总感觉有些小题大做.寻路算法大多数都是为了得出最 ...

  2. C# delegate multicast single delegate

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serializatio ...

  3. wpf datetime format

    <Style TargetType="{x:Type DatePickerTextBox}"> <Setter Property="Control.Te ...

  4. SQL Server 数据库备份语句

    ); --文件名 DECLARE @date DATETIME; --日期 ); --文件存放路径 SELECT @date = GETDATE(); --获取当前时间 --根据当前时间自动生成文件名 ...

  5. 科技风商务项目管理PPT模板

    模板来源:http://ppt.dede58.com/peixunyanjiang/26267.html

  6. FCC---Animate Elements at Variable Rates----一闪一闪亮晶晶,不同的闪动节奏

    There are a variety of ways to alter the animation rates of similarly animated elements. So far, thi ...

  7. 如何在HTML中设置文本的大小写

    text-transform属性介绍 text-transform属性就是设置HTML页面中的标签里面的文本大小写,text-transform属性常用的属性值有三种:capitalize.upper ...

  8. mac上安装npm

    检查brew -v是否安装了homebrew这个macOS 缺失的软件包的管理器.如果安装,跳转到第3步,否则跳转到第二步: 安装homebrew.安装跳转到官网指导.等待安装好之后,输入brew - ...

  9. ft6236 触摸屏驱动

    在目录下amp\a53_linux\drv\extdrv\touchpad\ft6236下可以看到ft6236.c的文件 1. init函数 static int __init ft_init(voi ...

  10. react中界面跳转 A界面跳B界面,返回A界面,A界面状态保持不变 redux的state方法

    在上一篇文章中说过了react中界面A跳到B,返回A,A界面状态保持不变,上篇中使用的是传统的localStorage方法,现在来使用第二种redux的state方法来实现这个功能 现在我刚接触red ...