shiro教程之编程式授权
来源:互联网 发布:光翼学园网络班2016 编辑:程序博客网 时间:2024/05/01 03:41
一、权限认证的核心要素
权限认证即访问控制:在应用中控制谁能访问哪些资源。在权限认证中,最核心的三要素是:权限、角色和用户;
权限,即操作资源的权利,比如访问某个页面,以及对某个模块的数据的加载、修改、删除、查看的权利;
角色,是权限的集合,一种角色可以包含多种权限;
用户,是Shiro中,代表访问系统的用户,即Subject。
二、基于角色的访问控制
shiro_role.ini
[users]root=123456,role1,role2gates=123456,role1
package com.shiro;import java.util.Arrays;import org.apache.shiro.subject.Subject;import org.junit.Test;import com.shiro.common.ShiroUtils;public class RoleTest { @Test public void testHasRole() { Subject currentUser=ShiroUtils.login("classpath:shiro_role.ini", "gates", "123456"); System.out.println(currentUser.hasRole("role2")?"hasRole2":"notHasRole2"); currentUser.logout(); } @Test public void testHasRoles() { Subject currentUser=ShiroUtils.login("classpath:shiro_role.ini", "root", "123456"); boolean[] result=currentUser.hasRoles(Arrays.asList("role1","role2","role3")); for (boolean b : result) { System.out.println(b); } currentUser.logout(); } @Test public void testHasAllRoles() { Subject currentUser=ShiroUtils.login("classpath:shiro_role.ini", "root", "123456"); System.out.println(currentUser.hasAllRoles(Arrays.asList("role1","role2"))?"yes":"no"); currentUser.logout(); } @Test public void testCheckRole() { //checkRole没有返回值,若没有role则抛出异常 Subject currentUser=ShiroUtils.login("classpath:shiro_role.ini", "gates", "123456"); currentUser.checkRole("role1"); currentUser.logout(); } @Test public void testCheckRoles() { Subject currentUser=ShiroUtils.login("classpath:shiro_role.ini", "root", "123456"); currentUser.checkRoles("role1","role2"); currentUser.logout(); }}
shiro_permission.ini
[users]gates=123456,role1root=123456,role1,role2[roles]role1=user:selectrole2=user:select,user:add,user:update,user:delete
package com.shiro;import org.apache.shiro.subject.Subject;import org.junit.Test;import com.shiro.common.ShiroUtils;public class PermissionTest { @Test public void testIsPermitted() { Subject currentUser=ShiroUtils.login("classpath:shiro_permission.ini", "gates", "123456"); //System.out.println(currentUser.isPermitted("user:select")); boolean[] result=currentUser.isPermitted("user:select","user:update"); for (boolean b : result) { System.out.println(b); } currentUser.logout(); } @Test public void testIsPermittedAll() { //必须全都有才返回true Subject currentUser=ShiroUtils.login("classpath:shiro_permission.ini", "gates", "123456"); System.out.println(currentUser.isPermittedAll("user:select","user:update")); currentUser.logout(); } @Test public void testCheckPermission() { //没有返回值,错误抛出异常 Subject currentUser=ShiroUtils.login("classpath:shiro_permission.ini", "gates", "123456"); currentUser.checkPermission("user:select"); currentUser.logout(); } @Test public void testCheckPermissions() { //没有返回值,错误抛出异常 Subject currentUser=ShiroUtils.login("classpath:shiro_permission.ini", "root", "123456"); currentUser.checkPermissions("user:select","user:add","user:update","user:delete"); currentUser.logout(); }}
0 0
- shiro教程之编程式授权
- Apache shiro 笔记整理之编程式授权
- Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程
- shiro第二天——角色和权限验证(编程式授权)
- Shiro教程之注解式&jsp标签授权
- shiro教程(3)-shiro授权
- Shiro 框架详解之授权
- Spring的事务处理之编程式事务处理
- Spring的事务处理之编程式事务处理
- Spring学习之编程式事务管理
- Shiro教程之HelloWorld
- Shiro入门之授权与认证
- shiro授权
- shiro 授权
- shiro 授权
- shiro授权
- shiro授权
- shiro授权
- 神经网络进阶(连载3)有监督的训练方法
- dup/dup2函数的用法
- 人脸识别之特征脸方法(Eigenface)
- C语言结构体里的成员数组和指针
- android_96_关联源码
- shiro教程之编程式授权
- VS调试器未命中断点问题总结
- PHP语法基础
- nginx map limit_req_zone
- Android滑动冲突解决方案
- SAP企业服务
- TP-Link TL-WDR4310 刷openwrt
- 学python第二天的笔记
- java注解