springboot整合shiro (二) 使用shiro过滤器实现认证资源拦截

简介: springboot整合shiro (二) 使用shiro过滤器实现认证资源拦截

我们去写几个页面来实现登录拦截

核心代码:

// 添加 Shiro 内置过滤器
        /**
         * Shiro 内置过滤器, 可以实现权限相关的拦截器
         * 常用的过滤器:
         *      anon: 无需认证(登录)即可访问
         *      authc: 必须认证才可访问
         *      user: 如果使用 rememberMe
         *      perms: 该资源必须得到资源权限才能访问
         *      role: 该资源必须得到角色权限才可访问
         */
        Map<String, String> filterMap = new LinkedHashMap<>();
        filterMap.put("/index", "anon");
        filterMap.put("/login", "anon");
        filterMap.put("/*", "authc");
        filterFactoryBean.setFilterChainDefinitionMap(filterMap);
        // 修改调整的登陆页面
        filterFactoryBean.setLoginUrl("/toLogin");

1. 登录和测试页面的撰写

首先引入 thymeleaf 依赖


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

然后我们写几个页面

index中就是有两个链接可以跳转到add和update页面, 而login则是实现登录

controller中添加跳转

package com.krlin.springbootshiro.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ShiroController {
    @RequestMapping("/index")
    public String index() {
        return "index";
    }
    @RequestMapping("/login")
    public String login() {
        return "login";
    }
    @RequestMapping("/add")
    public String add() {
        return "user/add";
    }
    @RequestMapping("/update")
    public String update() {
        return "user/update";
    }
    @RequestMapping("/toLogin")
    public String toLogin() {
        return "/login";
    }
}

现在点击跳转是可以跳转到添加或者更新页面的, 这时候我们需要加权限,当点击添加的时候判断是否登录, 如果登录了就可以跳转,否则跳转到登陆页面

2. shiro实现登录拦截

我们在 ShiroConfig中做修改

/**
     * 创建 ShiroFilterFactoryBean
     */
    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean (@Qualifier("securityManager") DefaultWebSecurityManager securityManager) {
        ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
        // 设置安全管理器
        filterFactoryBean.setSecurityManager(securityManager);
        // 添加 Shiro 内置过滤器
        /**
         * Shiro 内置过滤器, 可以实现权限相关的拦截器
         * 常用的过滤器:
         *      anon: 无需认证(登录)即可访问
         *      authc: 必须认证才可访问
         *      user: 如果使用 rememberMe
         *      perms: 该资源必须得到资源权限才能访问
         *      role: 该资源必须得到角色权限才可访问
         */
        Map<String, String> filterMap = new LinkedHashMap<>();
        filterMap.put("/add", "authc");
        filterMap.put("/update", "authc");
        filterFactoryBean.setFilterChainDefinitionMap(filterMap);
        return filterFactoryBean;
    }

我们给 /add和/update 加上authc权限, 再次访问‘

可以看到,再次点击添加用户就会跳转到 login.jsp 但是因为login.jsp不存在, 所以是404

我们可以修改他跳转到指定页面,

// 修改调整的登陆页面
filterFactoryBean.setLoginUrl("/toLogin");

这个时候我们点击添加或者更新就会跳转到登陆页面

一般我们对一个网站做拦截处理的时候是对所有路径拦截,然后去放行某些登录注册等路径, 操作如下

我们去拦截所有的请求, 但是放行 /index 这个请求

相关文章
|
9月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
1086 0
|
6月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
567 4
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
635 0
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
476 0
|
10月前
|
缓存 安全 Java
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
872 7
|
9月前
|
人工智能 安全 Java
Spring Boot 过滤器 拦截器 监听器
本文介绍了Spring Boot中的过滤器、拦截器和监听器的实现与应用。通过Filter接口和FilterRegistrationBean类,开发者可实现对请求和响应的数据过滤;使用HandlerInterceptor接口,可在控制器方法执行前后进行处理;利用各种监听器接口(如ServletRequestListener、HttpSessionListener等),可监听Web应用中的事件并作出响应。文章还提供了多个代码示例,帮助读者理解如何创建和配置这些组件,适用于构建更高效、安全和可控的Spring Boot应用程序。
856 0
|
XML JavaScript Java
SpringBoot集成Shiro权限+Jwt认证
本文主要描述如何快速基于SpringBoot 2.5.X版本集成Shiro+JWT框架,让大家快速实现无状态登陆和接口权限认证主体框架,具体业务细节未实现,大家按照实际项目补充。
976 11
|
Java Spring
spring boot 集成websocket与shiro的坑
spring boot 集成websocket与shiro的坑
909 0
|
安全 Java 数据库
Spring Boot中集成 Shiro
本节主要介绍了 Shiro 安全框架与 Spring Boot 的整合。先介绍了 Shiro 的三大核心组件已经它们的作用;然后介绍了 Shiro 的身份认证、角色认证和权限认证;最后结合代码,详细介绍了 Spring Boot 中是如何整合 Shiro 的,并设计了一套测试流程,逐步分析 Shiro 的工作流程和原理,让读者更直观地体会出 Shiro 的整套工作流程。Shiro 使用的很广泛,希望读者将其掌握,并能运用到实际项目中。
|
前端开发 Java Spring
使用Spring Boot集成Shiro时出现了无法注入Service的问题
使用Spring Boot集成Shiro时出现了无法注入Service的问题
419 0