一、Shiro授权

  前提:需要认证通过才会有授权一说

1、授权过程

2、相关方法说明

①subject.hasRole("role1"):判断是否有该角色

②subject.hasRoles(List):分别判断该角色是否具有该List的每个内容

③subject.hasAllRoles(Collection):返回boolean,要求参数中所有角色都需要具有

④subject.isPermitted(""):判断是否有该权限

二、shiro.ini实现授权

1、新建module,添加如下pom依赖

<properties>
<shiro.version>1.4.1</shiro.version>
<loggingg.version>1.2</loggingg.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${loggingg.version}</version>
</dependency>
</dependencies>

2、shiro.ini添加配置

3、test类

public class TestAuthorization
{
public static void main(String[] args)
{
//1.模拟前台传递的用户名和密码
String username = "zhangsan";
String password = "123456";
//2.创建安全管理器的工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//3.通过安全管理器工厂获取安全管理器
SecurityManager securityManager = factory.getInstance();
//4.将安全管理器绑定到当前运行环境
SecurityUtils.setSecurityManager(securityManager);
//5.从当前环境中获取Subject主体
Subject subject1 = SecurityUtils.getSubject();
//6.调用主体的登录方法
try {
subject1.login(new UsernamePasswordToken(username,password));
System.out.println("登录成功!");
} catch (IncorrectCredentialsException e) {
System.out.println("密码不正确");
}catch (UnknownAccountException e) {
System.out.println("用户名不存在");
}
//角色判断
boolean role2 = subject1.hasRole("role2");
System.out.println("是否有role2的角色:"+role2);
//分别判断集合中元素,返回boolean数组
boolean[] booleans = subject1.hasRoles(Arrays.asList("role1", "role2", "role3"));
for (boolean aBoolean : booleans)
{
System.out.println(aBoolean);
}
//判断当前用户是否有集合中所有角色
boolean b = subject1.hasAllRoles(Arrays.asList("role1", "role2", "role3"));
System.out.println(b); //判断权限
boolean permitted = subject1.isPermitted("user:query");
System.out.println("判断当前用户是否有user:query的权限:"+permitted); boolean[] permitted1 = subject1.isPermitted("user:query", "user:add", "user:delete");
for (boolean b1 : permitted1) {
System.out.println(b1);
}
boolean permittedAll = subject1.isPermittedAll("user:query", "user:add", "user:delete");
System.out.println(permittedAll);
}
}

  这样就实现shiro.ini授权,接下来通过shiro.ini实现自定义realm:Shiro入门学习之自定义Realm(四)

最新文章

  1. 简单说下COALESCE这个日常使用的函数
  2. Attention:本博客暂停更新
  3. java1234初学maven
  4. 一个字体引发的bug
  5. win7 下配置Openssl
  6. sphinx
  7. 2016年10月20日 星期四 --出埃及记 Exodus 19:4
  8. odbc连接数据库
  9. myeclipse8.5如何注册,转自他出
  10. PHP simpleXML文件编程
  11. JDK 5~8的特性对比
  12. centos7进单用户
  13. 20172306 2018-2019-2 《Java程序设计与数据结构》第九周学习总结
  14. 启动tomcat出现Removing obsolete files from server... Could not clean server of obsolete ……错误
  15. Unity3d Platformer Pro 2D游戏开发框架使用教程
  16. java:冒泡排序、选择排序、插入排序实现
  17. ES6的新API如Promise,Proxy,Array.form(),Object.assign()等,Babel不能转码, 使用babel-polyfill来解决
  18. 【Java】【6】JDK8 Stream操作整理
  19. Nginx的介绍
  20. php 获取开始日期与结束日期之间所有日期

热门文章

  1. Spring家族几大插件
  2. vs2015编译各种库
  3. break continue goto
  4. bzoj 2049: [Sdoi]Cave 洞穴探测 (LCT)
  5. bzoj 4196:[NOI2015] 软件包管理器 (树链剖分)
  6. 总结下抽象类Abstract和虚方法Virtual(易混点)
  7. 【资源分享】Gmod动态方框透视脚本
  8. Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()
  9. TCP协议的3次握手与4次挥手过程【深度详解】
  10. JS高级---面向对象的编程思想(贪吃蛇梳理)