教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Shiro身份认证流程

更新时间:2020年08月04日17时18分 来源:澳门大阳城APP入口 浏览次数:

1、身份认证

【1】基本流程

1596520320960_Shiro入门:身份认证封面.jpg

流程如下:

1、Shiro把用户的数据封装成标识token,token一般封装着用户名,密码等信息;

2、使用Subject门面获取到封装着用户的数据的标识token;

3、Subject把标识token交给SecurityManager,在SecurityManager安全中心中,SecurityManager把标识token委托给认证器;Authenticator进行身份验证。认证器的作用一般是用来指定如何验证,它规定本次认证用到哪些Realm;

4、认证器Authenticator将传入的标识token,与数据源Realm对比,验证token是否合法。

2、案例演示

【2.1】需求

使用shiro完成一个用户的登录

【2.2】实现

【2.2.1】新建项目
shiro-day01-01authenticator

1596520194957_Shiro入门:身份认证02.jpg

【2.2.2】导入依赖

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4.0.0

  com.itheima.shiro

  shiro-day01-01authenticator

  1.0-SNAPSHOT

  shiro-day01-01authenticator

 

  http://www.example.com

 

    utf-8

 

 

   

      commons-logging

      commons-logging

      1.1.3

   

   

      org.apache.shiro

      shiro-core

      1.3.2

   

   

      junit

      junit

      4.11

   

 

 

   

     

     

        org.apache.maven.plugins

        maven-compiler-plugin

        3.1

       

          8

          8

          true

       

     

   

 
     


【2.2.3】编写shiro.ini

#声明用户账号

[users]

jay=123

【2.2.4】编写HelloShiro

package com.itheima.shiro;

import org.apache.shiro.SecurityUtils;

import org.apache.shiro.authc.UsernamePasswordToken;

import org.apache.shiro.config.IniSecurityManagerFactory;

import org.apache.shiro.mgt.SecurityManager;

import org.apache.shiro.subject.Subject;

import org.apache.shiro.util.Factory;

import org.junit.Test;

/**

 * @Description:shiro的第一个例子

 */

public class HelloShiro {

    @Test

    public void shiroLogin() {

        //导入权限ini文件构建权限工厂

        Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");

        //工厂构建安全管理器

        SecurityManager securityManager = factory.getInstance();

        //使用SecurityUtils工具生效安全管理器

        SecurityUtils.setSecurityManager(securityManager);

        //使用SecurityUtils工具获得主体

        Subject subject = SecurityUtils.getSubject();

        //构建账号token

        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("jay", "123");

        //登录操作

        subject.login(usernamePasswordToken);

        System.out.println("是否登录成功:" + subject.isAuthenticated());

    }

}

【2.2.4】测试

1596520223591_Shiro入门:身份认证03.jpg


【2.3】小结

(1)权限定义:ini文件

(2)加载过程:

导入权限ini文件构建权限工厂;

工厂构建安全管理器;

使用SecurityUtils工具生效安全管理器;

使用SecurityUtils工具获得主体;

使构建账号token用SecurityUtils工具获得主体;

构建账号token;

登录操作。


猜你喜欢:

shiro是啥?Shiro的核心组件介绍

系统权限授权和授权逻辑流程

用户身份认证流程

0 分享到:
和我们在线交谈!
Baidu
sogou