1.文件结构
2.pom.xml导入依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- shiro-core -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
3.定义shiro.ini
[users]
admin=hello
wyyblog=java
4.测试类testLoginDemo.java
package top.wyyblog.demo;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
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;
public class testLoginDemo {
public static void main(String[] args) {
//取得Factory对象
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//取得里面所保存的认证的数据信息
SecurityManager securityManager = factory.getInstance();
// 利用专门的认证操作的处理类,实现认证处理的实现
SecurityUtils.setSecurityManager(securityManager);
// 获取进行用户名和密码认证的接口对象
Subject subject = SecurityUtils.getSubject();
//定义了一个Token,里面保存了用户名和密码的信息
UsernamePasswordToken token = new UsernamePasswordToken("admin","hello");
//实现用户登录
/**
* 如果错误的话就会抛出异常
* 1. 密码错误:
* org.apache.shiro.authc.IncorrectCredentialsException:
* Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - admin,
* rememberMe=false] did not match the expected credentials.
* 2. 用户名错误:
* org.apache.shiro.authc.UnknownAccountException:
* Realm [org.apache.shiro.realm.text.IniRealm@6ae40994]
* was unable to find account data for the submitted AuthenticationToken
* [org.apache.shiro.authc.UsernamePasswordToken - dmin, rememberMe=false].
* !!!如果账户出现了错误密码则不会验证...
*/
try {
subject.login(token);
System.out.println("登录成功:"+subject.getPrincipal());
}catch (AuthenticationException e){
//身份验证失败
System.out.println("登录失败");
}
//退出
subject.logout();
}
}