Shrio学习

第一步:引入依赖

 

<!-- shiro begin -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.6</version>
</dependency>
<!-- shiro end -->

第二步:shrio的配置文件为.ini结尾
[users]
xiaochen=123
zhangsan=123456
lisi=789



第三步:写一个简单的测试类
package com.yms;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

/**
* @Author 杨明书
* @PackageName: com.yms
* @ClassName: Authentication
* @Description:
* @Date: 2022/1/4 10:05
*/
public class Authentication {
public static void main(String[] args) {
//1.创建安全管理器对象
DefaultSecurityManager securityManager=new DefaultSecurityManager();
//2.给安全管理器设置realm
IniRealm iniRealm = new IniRealm("classpath:shrio.ini");
securityManager.setRealm(iniRealm);

// 3.securityUtils全局工具类
SecurityUtils.setSecurityManager(securityManager);
//4.关键对象,Subject
Subject subject = SecurityUtils.getSubject();
//5.创建令牌 用户名+密码
UsernamePasswordToken token = new UsernamePasswordToken("xiaochen", "1232");
try {
System.out.println("认证状态"+subject.isAuthenticated());
subject.login(token);
System.out.println("认证状态"+subject.isAuthenticated());
}catch (Exception e){
e.printStackTrace();
}



}
}

shrio中两个常见的错误:
第一个用户名不正确:

org.apache.shiro.authc.UnknownAccountException: Realm [org.apache.shiro.realm.text.IniRealm@e45f292] was unable to find account data for the submitted AuthenticationToken [org.apache.shiro.authc.UsernamePasswordToken - xiaocheng, rememberMe=false].
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:184)
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
at org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270)
at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256)
at com.yms.Authentication.main(Authentication.java:32)
与目标 VM 断开连接, 地址为: ''127.0.0.1:56805',传输: '套接字''

 

第二个:密码不正确

org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - xiaochen, rememberMe=false] did not match the expected credentials.
at org.apache.shiro.realm.AuthenticatingRealm.assertCredentialsMatch(AuthenticatingRealm.java:600)
at org.apache.shiro.realm.AuthenticatingRealm.getAuthenticationInfo(AuthenticatingRealm.java:578)
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:180)
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
at org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270)
at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256)
at com.yms.Authentication.main(Authentication.java:32)
与目标 VM 断开连接, 地址为: ''127.0.0.1:56811',传输: '套接字''




 

posted @ 2022-01-04 10:34  এএ᭄念卿এএ᭄  阅读(95)  评论(0编辑  收藏  举报