Loading... ### 认证在 Shiro 中被称为 **Authentication**,用来验证用户是不是拥有相应的身份,也可以理解为登陆时校验登陆凭证的过程。 首先需要导包,这里我们通过 maven 坐标的方式进行引用, 导入 shrio 和 junit 的包: ```xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> ``` 然后创建一个测试类来简单认识一下 Shiro 的认证流程: ```java import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.realm.SimpleAccountRealm; import org.apache.shiro.subject.Subject; import org.junit.Before; import org.junit.Test; public class AuthenticateTest { // 创建一个 Realm private SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm(); /** * 为 Realm 添加一个账户 */ @Before public void before() { simpleAccountRealm.addAccount("zhao", "123456"); } /** * 测试用户认证(登陆) */ @Test public void testAuthenticate() { // 构建 SecurityManager 环境 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); // 为 SecurityManager 设置 Realm defaultSecurityManager.setRealm(simpleAccountRealm); // 将 SecurityManager 放入 SecurityUtils 这个工具类中 SecurityUtils.setSecurityManager(defaultSecurityManager); // 获取一个 Subject Subject subject = SecurityUtils.getSubject(); // 创建一个账号密码, 在 web 应用中一般为表单上填写并传入后台. UsernamePasswordToken token = new UsernamePasswordToken("zhao", "123456"); // 进行登陆操作 subject.login(token); // 验证是否为登陆状态 System.out.println("是否登陆: " + subject.isAuthenticated()); } } ``` 登陆成功的话,`subject.isAuthenticated()`会返回 `true` 。 登陆失败的话,会抛出相应的异常,如: ``` UnknownAccountException # 未知账户/没找到帐号 IncorrectCredentialsException # 错误的凭证(密码)异常 ``` 本章代码地址 : https://github.com/zhaojun1998/Premission-Study/tree/master/Permission-Shiro-01/ 最后修改:2022 年 05 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请我喝杯咖啡吧。