我使用的是maven构建的工程,junit测试

Shiro认证过程
创建SecurityManager---》主体提交认证---》SecurityManager认证---》Authenticsto认证---》Realm验证 Shiro授权过程
创建SecurityManager---》主体授权---》ecurityManager授权---》Authorizer授权---》Realm获取角色权限数据

1.导入依赖

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ylht-shiro</artifactId>
<groupId>com.ylht</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>shiro-test</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency> <!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency> </dependencies> </project>

2.测试类


package com.ylht.shiro.test;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test; public class AuthenticateTest { //定义realm
SimpleAccountRealm realm = new SimpleAccountRealm(); @Before
public void addUser(){
//realm定义多个角色
//username,password,roles(后面用逗号隔开)
realm.addAccount("admin","admin","admin","user");
} @Test
public void testAuthenticate() {
//1.创建SecurityManager
DefaultSecurityManager securityManager = new DefaultSecurityManager();
securityManager.setRealm(realm); //2.主题提交认证
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("admin", "admin");
subject.login(token); System.out.println(subject.isAuthenticated()); //subject.logout(); //System.out.println(subject.isAuthenticated());
//验证多个授权
subject.checkRoles("admin","user"); }
}

最新文章

  1. 简单socket()编程
  2. 不懂指针就不要说自己学过C语言!
  3. Git学习笔记(10)——搭建Git服务器
  4. iOS - HTTPS接口加密和身份认证
  5. 利用在线工具自动化生成findviewById
  6. Linux压力测试工具Tsung安装、使用和图形报表生成
  7. LVS+keepalived实现负载均衡
  8. 【流媒体】 Android 实时视频编码—H.264硬编码
  9. Xcode Provisioning 路径
  10. AVCaptureSession 照相时获取 AVCaptureVideoPreviewLayer尺寸
  11. uva 993 Product of digits (贪心 + 分解因子)
  12. Resharp非常实用的快捷键
  13. heritrix 3.2.0 下载
  14. 【C++算法设计】八数码问题
  15. (Problem 10)Summation of primes
  16. 关于学习Python的一些心得
  17. Java IO(2)阻塞式输入输出(BIO)的字节流与字符流
  18. Java中 float、double使用注意问题
  19. javascript 函数后面有多个小括号f( )( )( )...
  20. [OC] NSTimer

热门文章

  1. bzoj4161 (k^2logn求线性递推式)
  2. SpringDataRedis使用说明常用方法
  3. 每日一个linux命令(1)
  4. Win7 SP1 安装SQL Server 2012时提示“此计算机上的操作系统不符合 SQL Server 2012的最低要求”
  5. Spring Security教程(5)---- 国际化配置及UserCache
  6. Excel小tips - 如何设置表格输入数字后末尾自动添加%
  7. TeamCity - Docker创建
  8. 海量数据处理面试题学习zz
  9. grails的criteria和hql查询
  10. Direct Buffer vs. Heap Buffer