Shiro安全框架
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。
一:入门案例
1.使用Idea创建一个Web项目
2.在pom.xml文件中引入依赖坐标
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.2</version>
</dependency>
3.添加配置文件,shiro.ini,放在resources目录下,模拟从数据库中查询登录名称和密码。
INI配置文件是一种key/value的键值对配置,提供了分类的概念,每一个类中的key不可重复,#号代表注释,shiro.ini文件默认在/WEB-INF/ 或classpath下,shiro会自动查找,INI配置文件一般适用于用户少且不需要在运行时动态创建的情景下使用。
ini配置中主要配置有四大类:
main:提供了对根对象 securityManager 及其依赖的配置
users:提供了对用户/密码及其角色的配置,用户名=密码,角色 1,角色 2
roles:提供了角色及权限之间关系的配置,角色=权限 1,权限 2
urls:用于 web,提供了对 web url 拦截相关的配置,url=拦截器[参数],拦截器
目前只配置user
[user]
admin=111
muma=222
4.创建一个测试类
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 ShiroTest1 {
public static void main(String[] args) {
//读取配置文件,初始化SecurityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//获取securityManager实例
SecurityManager securityManager = factory.getInstance();
//把securityManager实例绑定到SecurityUtils
SecurityUtils.setSecurityManager(securityManager);
//得到当前执行的用户
Subject subject = SecurityUtils.getSubject();
//创建token令牌,用户名/密码
UsernamePasswordToken token = new UsernamePasswordToken("admin","222");
try{
//身份验证
subject.login(token);
System.out.println("身份登录成功! ");
}catch(Exception e){
e.printStackTrace();
System.out.println("身份登录失败!");
}
//退出
subject.logout();
}
}
首先我输入正确的用户名admin,密码111,输出结果如下:
输入错误的用户名或密码,输出结果如下: