首页 > 其他 > 详细

shiro认证

时间:2020-12-18 14:48:55      阅读:24      评论:0      收藏:0      [点我收藏+]

1、认证

  身份认证就是判断一个用户是否为合法用户的处理过程。通过核对用户输入的用户名和口令,判断身份是否正确。

2、shiro中认证关键对象

  subject:主体

访问系统的用户,主体可以是用户、程序等,进行认证都称为主体。

  Principal:身份信息

例如:是主体(subject)进行身份认证的标识,标识必须具有唯一性。一个主体可以有多个身份,例如可以用手机号、账号、邮箱进行账号密码登陆。

  Credential:凭证信息

口令,只有主体自己知道的安全信息,例如,密码,证书等。

3、认证流程

  登陆用户,携带身份和口令(凭证),将两种信息打包成一个令牌,将令牌拿到安全管理器中,调用认证器,认证器调用ream获取数据库中数据,如果身份信息与口令与原始数据中的存留信息一致,就属于认证成功,放行进入系统,否则失败。

技术分享图片

 

 

 

4、认证开发

4.1 引入依赖

<!--编码处理  -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>
<!--JDk版本的引入  -->
    <profiles>
      <profile>
        <id>development</id>
        <activation>
          <jdk>1.8</jdk>
          <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
          <maven.compiler.source>1.8</maven.compiler.source>
          <maven.compiler.target>1.8</maven.compiler.target>
          <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
      </profile>
    </profiles>
<!--shiro包引入  -->
    <dependencies>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.5.3</version>
        </dependency>
    </dependencies>

4.2 shiro.ini配置文件

  在resource目录下,该配置存放的本次认证的账号和密码。

[users]
zhangsan=123
lisi=456
wangwu=789

4.3 认证代码

package com.demo;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

public class ShiroDemo {
    public static void main(String[] args) {
        //创建安全管理器
        DefaultSecurityManager defaultSecurityManager=new DefaultSecurityManager();
        //创建realm  读取配置文件中的用户名 密码
        defaultSecurityManager.setRealm(new IniRealm("classpath:shiro.ini"));
        //使用工具,将安装工具类中设置默认安全管理器
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        //实用工具类获取登录主体
        Subject subject = SecurityUtils.getSubject();
        //创建令牌  用户名+密码  
        UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "123");
        try {
            System.out.println("认证状态:"+subject.isAuthenticated());
            subject.login(token);//用户登录   这里加入了用户登陆信息
            System.out.println("认证状态:"+subject.isAuthenticated());  //验证登陆信息
            System.out.println("登录成功!!");
        } catch (UnknownAccountException e) {   
            e.printStackTrace();
            System.out.println("用户名错误!!");
        }catch (IncorrectCredentialsException e){
            e.printStackTrace();
            System.out.println("密码错误!!!");
        }   
    }   
}

其他认证异常

  DisabledAccountException(账号被禁用)

  LockedAccountException(账号被锁定)

  ExcessiveAttemptsException(登录失败次数过多)

  ExpiredCredentialsException(凭证过期)

shiro认证

原文:https://www.cnblogs.com/HelloM/p/14154258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!