SpringBoot进阶之整合Shiro鉴权框架(三)

简介: SpringBoot进阶之整合Shiro鉴权框架(三)

前言

大家好,一直以来我都本着用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 基础知识 的铺垫。目前正在出一个SpringBoot长期系列教程,从入门到进阶, 篇幅会较多~


适合人群

  • 学完Java基础
  • 想通过Java快速构建web应用程序
  • 想学习或了解SpringBoot
  • SpringBoot进阶学习

大佬可以绕过 ~


背景

如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot基础部分,对基本的使用有了初步的认识, 接下来的几期内容将会带大家进阶使用,会先讲解基础中间件的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有收获~


情景回顾

上期带大家学习了Shiro的基本使用,实现了用户认证功能,本期将带大家学习Shiro中如何存储cookie。同样的,我们集成到Springboot中。


功能实现

上期我们遗留了一个小问题,就是用户打开浏览器登录后,再关闭,然后又跳回了登录页。那么如何去解决这个问题❓其实很简单,让我们的服务器记住它不就好了,想让它失效,就给一个过期时间


ShiroConfig类中添加如下方法:

/**
     * cookie
     * @return
     */
    public SimpleCookie rememberMeCookie() {
        // 设置cookie名称
        SimpleCookie cookie = new SimpleCookie("rememberMe");
        // 过期时间,单位秒
        cookie.setMaxAge(86400);
        return cookie;
    }
    /**
     * cookie管理对象
     * @return
     */
    public CookieRememberMeManager rememberMeManager() {
        CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
        cookieRememberMeManager.setCookie(rememberMeCookie());
        // cookie加密的密钥
        cookieRememberMeManager.setCipherKey(Base64.decode("uwandaljILlia458ad4"));
        return cookieRememberMeManager;
    }
复制代码


修改 securityManager()方法

@Bean
public SecurityManager securityManager(){
    DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();
    securityManager.setRealm(shiroRealm());
    // 添加remberManager
    securityManager.setRememberMeManager(rememberMeManager());
    return securityManager;
}
复制代码


修改认证路径, user指的是用户认证通过或者配置了Remember Me记住用户登录状态后可访问

// filterChainDefinitionMap.put("/**", "authc");
filterChainDefinitionMap.put("/**", "user");
复制代码


最后修改我们的控制器,在登录调用的时候传入是否记住:

@PostMapping("/login")
@ResponseBody
public String login(String username, String password) {
    //UsernamePasswordToken token = new UsernamePasswordToken(username, password);
    // 获取Subject对象
    UsernamePasswordToken token = new UsernamePasswordToken(username, password, true);
    Subject subject = SecurityUtils.getSubject();
    try {
        // 执行登录
        subject.login(token);
        return "ok";
    } catch (UnknownAccountException e) {
        return e.getMessage();
    } catch (IncorrectCredentialsException e) {
        return "IncorrectCredentialsException " + e.getMessage();
    } catch (LockedAccountException e) {
        return "LockedAccountException " + e.getMessage();
    } catch (AuthenticationException e) {
        return "认证失败!";
    }
}
复制代码

大家试着运行一下 ~


结束语

本期内容就到这里结束了,总结一下,本节主要讲了Shiro如何记住用户登录状态以及相关实现,大家可以自己多试试


下期预告

下期给大家讲讲Shiro中的权限认证,这块内容也是重点。下期见, 关注我,不迷路~ 加群一起交流

相关文章
|
6月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
2月前
|
安全 Java Apache
SpringBoot+Shiro(一)
SpringBoot+Shiro(一)
|
22天前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
34 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
29天前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
54 2
Springboot+shiro,完整教程,带你学会shiro
|
29天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
210 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
16 0
|
22天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
21 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
3月前
|
SQL 前端开发 Java
springboot项目中使用shiro实现用户登录以及权限的验证
这篇文章详细介绍了如何在Spring Boot项目中集成Apache Shiro框架来实现用户登录和权限验证,包括项目依赖配置、数据库连接、实体类定义、控制器、服务层、Mapper层以及前端页面的实现,并展示了实际效果和过滤器代码。
springboot项目中使用shiro实现用户登录以及权限的验证
|
3月前
|
NoSQL 安全 Java
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权