从零开始学 Shiro 01 - 认证

认证在 Shiro 中被称为 Authentication,用来验证用户是不是拥有相应的身份,也可以理解为登陆时校验登陆凭证的过程。

首先需要导包,这里我们通过 maven 坐标的方式进行引用, 导入 shrio 和 junit 的包:

<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 的认证流程:

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/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.Shiro简介 Shiro框架是和spring security框架作用差不多的一个安全认证授权框架,但它更加...
    兴厚阅读 10,885评论 0 14
  • Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and eas...
    我没有三颗心脏阅读 13,526评论 7 32
  • Apache Shiro Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权...
    罗志贇阅读 8,477评论 1 49
  • title: Shiro之实现认证tags: shirocategories: shiro 若图片无法显示,请前往...
    codingXiaxw阅读 4,130评论 1 1
  • "小白,我想好了,我要离开了,就在今晚月亮最白的时候,我知道她又在想我啦,行动代号:夜晚的暗恋" "可是大黄,...
    可以噻阅读 1,576评论 0 0

友情链接更多精彩内容