002 使用固定信息模拟认证过程--理解认证的过程

Posted trekxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002 使用固定信息模拟认证过程--理解认证的过程相关的知识,希望对你有一定的参考价值。

一 . 环境的搭建

我们使用maven来搭建工程.

<dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.3.0</version>
</dependency>
本次使用的1.3.0的版本.

当然为了更好的shiro的运行过程,我们导入日志组件包.

本次使用log4j来完成.

<dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>

 


 

二 .在resource目录下创建一个shiro.int文件

[users]
zhangsan=123
trek=123

我们创建了两个固定信息的用户,一个是张三,密码为123.另一个为trek,密码为123.


 

三.实现认证

public class ShiroTest {
    private static final Logger logger = LoggerFactory.getLogger(ShiroTest.class);
    public static void main(String[] args) {
        //创建SecurityManager
        SecurityManager manager = new IniSecurityManagerFactory("classpath:shiro.ini").getInstance();
        //将securityManager设置到当前环境下
        SecurityUtils.setSecurityManager(manager);
        
        //获取Subject对象
        Subject subject = SecurityUtils.getSubject();
        //创建token --
        UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","1233");
        //实现登录
        try {
            subject.login(token);
        } catch (AuthenticationException e) {
            logger.error("认证失败!!!");
            return ;
        }
        logger.info("认证成功!!!");
    }
}

整个认证的过程非常简单:

[1]前面的部分我们不需要关注.主要知道我们在设置SecurityManager就可以了.

[2]创建Subjcet对象,将账号和密码传给login方法

[3]这个方法会出现异常,我们需要进行捕获.这个异常的问题我们后面会重点关注的.

[4]如果没有问题就说明我们的认证过程成功了.


 

AuthenticationException异常:
这个异常是shiro认证过程中的核心异常,shiro为我们创建了一些常用的异常.
如 : 账号不存的异常,密码不正确的异常,账号被锁定的异常等.
我们可以捕获不同的异常实现自己的业务逻辑.


总结一下 : 
shiro的认证我们就需要调用login方法,传入token对象就可以了.
如果要自定义认证过程就需要重写认证器和Realm.这个过程是我们下面需要讲解的.

以上是关于002 使用固定信息模拟认证过程--理解认证的过程的主要内容,如果未能解决你的问题,请参考以下文章

拿什么守护你,我的接口(接口登陆认证详解)

Apache Shiro 使用手册Shiro 认证

Openstack认证过程

shiro认证过程

Spring Security 解析 —— 认证过程

分布式认证协议Oauth2.0 的基础例子