shiro学习(一)---认证入门程序

1、导入jar包
这里写图片描述

2、创建shiro-first.ini文件

[users]
zhangsan=111111
lisi=22222

3、创建AuthenticationTest测试类

public class AuthenticationTest {

    // 用户登陆和退出
    @Test
    public void testLoginAndLogout() {

        // 创建securityManager工厂,通过ini配置文件创建securityManager工厂
        Factory<SecurityManager> factory = new IniSecurityManagerFactory(
                "classpath:shiro-first.ini");

        // 创建SecurityManager
        SecurityManager securityManager = factory.getInstance();

        // 将securityManager设置当前的运行环境中
        SecurityUtils.setSecurityManager(securityManager);

        // 从SecurityUtils里边创建一个subject
        Subject subject = SecurityUtils.getSubject();

        // 在认证提交前准备token(令牌)
        // 这里的账号和密码 将来是由用户输入进去
        UsernamePasswordToken token = new UsernamePasswordToken("zhangsan",
                "111111");

        try {
            // 执行认证提交
            subject.login(token);
        } catch (AuthenticationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // 是否认证通过
        boolean isAuthenticated = subject.isAuthenticated();

        System.out.println("是否认证通过:" + isAuthenticated);

        // 退出操作
        subject.logout();

        // 是否认证通过
        isAuthenticated = subject.isAuthenticated();

        System.out.println("是否认证通过:" + isAuthenticated);

    }
}

4、进行Junit Test
这里写图片描述

获得结果
这里写图片描述

执行流程

  1. 通过ini配置文件创建securityManager。
  2. 调用subject.login方法提交认证。
    内部通过securityManager进行认证,securityManager通过authenticated最终由ModularRealmAuthenticator进行认证。
  3. ModularRealmAuthenticator拿着输入的token(UsernamePasswordToken)和shiro-first.ini中的配置的用户名和密码进行对比,IniRealm负责从shiro-first.ini中查询用户信息(账号和密码)
    iniRealm查询账号时找不到给ModularRealmAuthenticator返回null(说明账号不存在)
    账号不存在则抛出异常:
    org.apache.shiro.authc.UnknownAccountException: Realm [org.apache.shiro.realm.text.IniRealm@6a9dd62a] was unable to find account data。。。

    如果上一步查询到用户

    ModularRealmAuthenticator进行密码匹配,如果不对,ModularRealmAuthenticator抛出异常:

    org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - zhangsan, rememberMe=false] did not match the expected credentials.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值