前言
本章讲解使用Shiro实现登陆验证
方法
1.概念
Authentication,验证用户是否合法,说白了就是登陆。
需要提交用户的身份和凭证给shiro,简单点来说就是用户名和密码。
Principals:用户的身份信息,是Subjec的标识属性。能够唯一标识Subjcet。如电话号码、电子邮箱,身份证号等。
Credentials:凭证,是只被Subject知道的秘密值。可以是密码,也可以是其他,如数字证书等。
2.Shiro中用户的认证流程
3.实现步骤
1)新建一个Gradle的Java工程
2)引入Shiro相关的jar包
3)创建shrio.ini用来验证用户名密码是否合法
这里我们指定了用户名和密码必须为admin和123的时候才算验证成功!
4)编写代码进行验证
package cn.edu.ccut.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
import org.apache.shiro.mgt.SecurityManager;
/**
* @Auther:jwang
* @Date:2019/5/8
* @Description:cn.edu.ccut.test
* @Version 1.0
**/
public class Authentication {
public static void main(String [] args){
//创建SecurityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//通过SecurityManager工厂获取SecurityManager实例
SecurityManager securityManager = factory.getInstance();
//将SecurityManager对象设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
//通过SecurityUtils获取主体Subject
Subject currentUser = SecurityUtils.getSubject();
//假设传入的用户名密码为admin和123
UsernamePasswordToken token = new UsernamePasswordToken("admin", "123");
//进行用户身份验证
currentUser.login(token);
//如果用户认证成功
if (currentUser.isAuthenticated()) {
System.out.println("用户登录成功!");
}else {
System.out.println("用户登录失败!");
}
}
}
注意:需要引入org.apache.shiro.mgt.SecurityManager,否则默认是java.lang.SecurityManager
运行代码我们发现:
显然,我们还缺少相关的jar包,进行引入:
导入后运行结果如下:
这意味着用户登录认证通过!