shiro 介绍与认证(登录)
shiro 介绍
写这个系列的博客的初衷:由于网上的文章参差不齐, 要不是直接与spring的高度集合,就是博客写的不好看懂。这个系列,不会过多介绍底层原理,就是对shiro的快速入门。
源代码地址:链接:https://pan.baidu.com/s/1LvCOILLaN2edRRmQsifSTg 密码:grnp
Look at the URL of the reference document: http://shiro.apache.org/reference.html
直接进入主题:
创建一个简单的maven项目:
首先导入依赖包
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zs.shiro</groupId>
<artifactId>Shiro01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Shiro01</name>
<description>Shiro</description>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>
</project>
编写基本的shiro配置工厂,在/Shiro01/src/main/resources下,文件名为 shiro.ini
[users]
zs=123
zy=456
现在进入正题:编写一个简单的列子,在/Shiro01/src/main/java下,创建/Shiro01/src/main/java/com/zs/shiro/Shiro01Test.java。
package com.zs.shiro;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
public class Shiro01Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//加载配置文件 这个配置文件要与上面的文件名相同
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//获取实例
SecurityManager securityManager=factory.getInstance();
//将secruityManages绑定到SecurityUtils上
SecurityUtils.setSecurityManager(securityManager);
//得到当前用户
Subject user=SecurityUtils.getSubject();
//自定义一个token令牌
UsernamePasswordToken userToken=new UsernamePasswordToken("zs","123");
//身份验证
user.login(userToken);
System.out.println("登录成功:"+user.getPrincipal());
user.logout();
}
}
结果如图: