2、Shiro的认证

Shiro的认证流程大体可以参考下面这幅图:

但是没有接触过shiro的同学看到上面的图片也不明白,下面我们来在代码中尝试体验Shiro的认证过程:

1.新建一个SpringBoot项目项目结构如下:

ShiroframeApplicationTests代码:

package com.shiro.shiroframe;

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.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class ShiroframeApplicationTests {

//realm,暂时用来存储我们假造的用户信息
    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
    @BeforeEach//@BeforeEach注解的作用就是使她下面的方法在其他方法运行之前执行
    public void addUser(){
        //设置假造的用户信息,在Realm里面添加一个用户
        simpleAccountRealm.addAccount("qqq", "aaa");
    }
    @Test
    public void authenticator() {
        //1.构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        //设置SecurityManager环境下的Realm
        defaultSecurityManager.setRealm(simpleAccountRealm);
        //SecurityUtils先获取SecurityManager环境
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        //通过SecurityUtils获取Subject主体
        Subject subject = SecurityUtils.getSubject();
        //通过UsernamePasswordToken组织提交认证所要传递的参数
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("qqq", "aaa");
        //提交登录认证
        subject.login(usernamePasswordToken);
        //打印是否认证通过:subject.isAuthenticated()
        System.err.println("isAuthenticated:" + subject.isAuthenticated());//账号密码匹配的情况下打印结果:isAuthenticated:true;否则控制台报错:org.apache.shiro.authc.UnknownAccountException: Realm [[email protected]] was unable to find account data for the submitted AuthenticationToken [org.apache.shiro.authc.UsernamePasswordToken - qq, rememberMe=false].
        //登出
        subject.logout();
        //登出之后认证返回false
        System.err.println("isAuthenticated:" + subject.isAuthenticated());//isAuthenticated:false
    }

}

原文地址:https://www.cnblogs.com/luzhanshi/p/11023771.html

时间: 2024-11-05 18:49:58

2、Shiro的认证的相关文章

Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:<跟我学Shiro>系列教程.但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的.文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦.就像一个网友评价的这样: 看了看这个教程,看完之后都想放弃shiro了,完全看不懂,后来百度了很多别的资料才理解了sh

003 Shiro的认证

一 . 概述 认证:简单说就是登录,用户携带账号和密码信息通过Subject对象与shiro进行交互,看用户的身份凭证是否正确. 本节需要演示认证的流程. 二 .搭建环境 本次使用ini充当Realm对象,使用IniSecurityManager充当SecurityManager对象,这个在后面我们都会重写进行定制的,这里只是简单介绍流程. 我们的ini文件的内容: [users] trek=123 这个ini文件之中,定义了一个账号为trek,密码为123的用户. 三 .流程代码 //实现sh

Shiro 登录认证源码详解

Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加的简单. 本文主要介绍 Shiro 的登录认证(Authentication)功能,主要从 Shiro 设计的角度去看这个登录认证的过程. 一.Shiro 总览 首先,我们思考整个认证过程的业务逻辑: 获取用户输入的用户名,密码: 从服务器数据源中获取相应的用户名和密码: 判断密码是否匹配,决定是否

快速理解shiro的认证

shiro的认证: 流程图: 采用测试用例的方式快速开始: 单元测试注解的执行顺序: @BeforeClass -> @before -> @Test ->@After ->@AfterClass 测试代码: public class IsSpringbootShiroApplicationTests { private DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); pri

Shiro身份认证、盐加密

目的: Shiro认证 盐加密工具类 Shiro认证 1.导入pom依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.s

使用Shiro实现认证和授权(基于SpringBoot)

Apache Shiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观,全面的身份验证,授权,加密和会话管理解决方案.下面是在SpringBoot中使用Shiro进行认证和授权的例子,代码如下: pom.xml 导入SpringBoot和Shiro依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s

shiro登陆认证

1.LoginController @RequestMapping(method = RequestMethod.POST) public String login(User user, HttpServletRequest request) { try { ubject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(user.getLoginName()

Apache shiro(3)-认证过程

自己看了看前面写的几篇博客,实在是惨不忍睹.原来觉得别人这块写的不怎么样,什么都没有讲清楚.然后自己写,结果是我写的更烂.如果你被我之前的博客摧残过了,深表歉意.实践这个事情说不清楚,来来来,我们讲道理吧还是. 认证过程 认证过程也就是对用户验明正身的过程,即确认用户输入的身份信息是正确的合法的过程.我们先看看这个认证过程的图: 就如图上所说,其实这个认证过程,是在Shiro的SecurityManager中自动完成的.我们使用的时候真正做的内容是从用户输入哪里收集用户的身份信息(用户名+密码)

Shiro权限认证

   一.权限认证核心要素 权限认证顾名思义,就是在应用系统中,控制谁能访问哪些资源.核心要素有仨:权限.角色.用户 权限:即操作资源的权利,如访问某个url,对某个模块数据进行增删改查 角色:权限的集合,一种角色可以包含多种权限.例如操作员角色可查看系统账单.进行结账操作多种权限. 用户:也就是身份认证中提到的subject一角. 二.授权 shiro授权的方式通常有三种: 1.编程式授权:在代码中进行授权操作,可基于角色和权限两种方式. 2.注解式授权:使用注解对方法或类进行授权,标注该类可