iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >springBoot中shiro的302跳转问题怎么解决
  • 250
分享到

springBoot中shiro的302跳转问题怎么解决

2023-06-22 03:06:58 250人浏览 安东尼
摘要

本篇内容介绍了“SpringBoot中shiro的302跳转问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springBoot前

本篇内容介绍了“SpringBootshiro的302跳转问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

springBoot前后端分离项目shiro的302跳转

项目是使用的springboot ,使用的shiro做的用户鉴权。在前端请求时当用户信息失效,session失效的时候,shiro会重定向到配置的login.jsp 页面,或者是自己配置的logUrl。

因是前后端分离项目,与静态资源文件分离,固重定向后,接着会404。

经过查找网上配置资料,发现302原因是

  • FORMAuthenticationFilter中onAccessDenied 方法做了相应处理。那知道问题所在,就可以有解决方了。

  • 重写 onAccessDenied 方法,针对自己的业务做相应处理,然后在加载过滤器配置的时候添加到配置中。

以下是代码

增加类ShiroFormAuthenticationFilter 重新方法

package com.oilpay.wallet.shiro; import com.alibaba.fastJSON.JSONObject;import com.oilpay.wallet.interceptor.TokenInterceptor;import org.apache.shiro.WEB.filter.authc.FormAuthenticationFilter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.Http.httpstatus;import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter; public class ShiroFormAuthenticationFilter extends FormAuthenticationFilter {     Logger logger  = LoggerFactory.getLogger(TokenInterceptor.class);     @Override    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {        if (isLoginRequest(request, response)) {            if (isLoginSubmission(request, response)) {                if (logger.isTraceEnabled()) {                    logger.trace("Login submission detected.  Attempting to execute login.");                }                return executeLogin(request, response);            } else {                if (logger.isTraceEnabled()) {                    logger.trace("Login page view.");                }                //allow them to see the login page ;)                return true;            }        } else {            HttpServletRequest req = (HttpServletRequest)request;            HttpServletResponse resp = (HttpServletResponse) response;            if(req.getMethod().equals(RequestMethod.OPTIONS.name())) {                resp.setStatus(HttpStatus.OK.value());                return true;            }             if (logger.isTraceEnabled()) {                logger.trace("Attempting to access a path which requires authentication.  Forwarding to the " +                        "Authentication url [" + getLoginUrl() + "]");            }            //前端ajax请求时requestHeader里面带一些参数,用于判断是否是前端的请求            String test= req.getHeader("test");            if (test!= null || req.getHeader("wkcheck") != null) {                //前端Ajax请求,则不会重定向                resp.setHeader("Access-Control-Allow-Origin",  req.getHeader("Origin"));                resp.setHeader("Access-Control-Allow-Credentials", "true");                resp.setContentType("application/json; charset=utf-8");                resp.setCharacterEncoding("UTF-8");                PrintWriter out = resp.getWriter();                JSONObject result = new JSONObject();                result.put("message", "登录失效");                result.put("resultCode", 1000);                out.println(result);                out.flush();                out.close();            } else {                saveRequestAndRedirectToLogin(request, response);            }            return false;        }    }}

在过滤器配置中添加

@Bean(name="shiroFilter")    public ShiroFilterFactoryBean shiroFilter(@Qualifier("securityManager") SecurityManager manager) {        ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean();        shiroFilterFactoryBean.setSecurityManager(manager);        //配置访问权限        LinkedHashMap<String, String> filterChainDefinitionMap=new LinkedHashMap<String, String>();        filterChainDefinitionMap.put("/common/loGout", "logout");        filterChainDefinitionMap.put("/","anon");        filterChainDefinitionMap.put("/common/login","anon");         filterChainDefinitionMap.put("/commonpublic class MyFilter extends FormAuthenticationFilter{    private Logger log = LoggerFactory.getLogger(MyFilter.class);    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {       //进行重写,业务逻辑    }}

“springBoot中shiro的302跳转问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: springBoot中shiro的302跳转问题怎么解决

本文链接: https://www.lsjlt.com/news/302119.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springBoot中shiro的302跳转问题怎么解决
    本篇内容介绍了“springBoot中shiro的302跳转问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springBoot前...
    99+
    2023-06-22
  • springBoot前后端分离项目中shiro的302跳转问题
    springBoot前后端分离项目shiro的302跳转 项目是使用的springboot ,使用的shiro做的用户鉴权。在前端请求时当用户信息失效,session失效的时候,sh...
    99+
    2024-04-02
  • 解决Vue+SpringBoot+Shiro跨域问题
    目录一、配置Vue前端1、开发跨域配置2、生产跨域配置二、配置spring boot相信大家刚开始做都会遇到这个问题,在网上找了好多也不管用,都写的不全, 在这里记录一下,希望对大家...
    99+
    2024-04-02
  • SpringBoot在有Ajax时不跳转问题怎么解决
    这篇文章主要介绍“SpringBoot在有Ajax时不跳转问题怎么解决”,在日常操作中,相信很多人在SpringBoot在有Ajax时不跳转问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Sprin...
    99+
    2023-06-30
  • Vue+SpringBoot+Shiro跨域问题的解决方法
    这篇文章将为大家详细讲解有关Vue+SpringBoot+Shiro跨域问题的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、配置Vue前端在config下index.js中配置代理信息注意:这...
    99+
    2023-06-15
  • 怎么解决react link不跳转问题
    这篇文章主要介绍了怎么解决react link不跳转问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 reac...
    99+
    2024-04-02
  • 关于SpringBoot在有Ajax时候不跳转的问题解决
    目录问题描述解决方法原因梳理总结问题描述 最近在尝试使用SpringBoot做一个后台管理系统,由于目前还没有学会VUE,所以前端页面采用的 thymeleaf+ajax的模式。前两...
    99+
    2024-04-02
  • vue页面跳转传参的问题怎么解决
    在Vue中,可以通过路由传参来解决页面跳转传参的问题。1. 使用路由参数传参:可以通过在路由路径中定义参数来传递数据。在定义路由时,...
    99+
    2023-08-08
    vue
  • 怎么解决springboot+shiro+thymeleaf页面级元素的权限控制问题
    今天小编给大家分享一下怎么解决springboot+shiro+thymeleaf页面级元素的权限控制问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-06-29
  • 跳转到php页面的显示问题怎么解决
    本文小编为大家详细介绍“跳转到php页面的显示问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“跳转到php页面的显示问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、PHP 页面跳转方式首...
    99+
    2023-07-06
  • vue跳转后页面置顶的问题怎么解决
    这篇文章主要介绍了vue跳转后页面置顶的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue跳转后页面置顶的问题怎么解决文章都会有所收获,下面我们一起来看看吧。vue跳转后页面置顶今天测试指出我的项...
    99+
    2023-06-30
  • PHP登录成功后的跳转问题怎么解决
    本篇内容主要讲解“PHP登录成功后的跳转问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP登录成功后的跳转问题怎么解决”吧!一、浏览器跳转和服务器跳转在 PHP 中,有两种跳转方式...
    99+
    2023-07-05
  • php跳转时间戳相关问题怎么解决
    这篇文章主要介绍了php跳转时间戳相关问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php跳转时间戳相关问题怎么解决文章都会有所收获,下面我们一起来看看吧。PHP跳转时间戳:在网站开发中,常常需要用...
    99+
    2023-07-05
  • SpringMVC中的跳转方式和视图解析器问题怎么解决
    这篇文章主要介绍“SpringMVC中的跳转方式和视图解析器问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC中的跳转方式和视图解析器问题怎么解决”文章能帮助大家解决问题。...
    99+
    2023-07-04
  • 如何解决SpringBoot Shiro权限注解不起作用的问题
    本篇内容主要讲解“如何解决SpringBoot Shiro权限注解不起作用的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决SpringBoot Shiro权限注解不起作用的问题”吧!...
    99+
    2023-06-20
  • SpringBoot中的跨域问题怎么解决
    本篇内容主要讲解“SpringBoot中的跨域问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中的跨域问题怎么解决”吧!1、跨域访问报错当一个请求url的协议、域名...
    99+
    2023-06-29
  • Vue路由跳转传参或打开新页面跳转问题怎么解决
    这篇文章主要介绍了Vue路由跳转传参或打开新页面跳转问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue路由跳转传参或打开新页面跳转问题怎么解决文章都会有所收获,下面我们一起来看看吧。Vue路由跳转...
    99+
    2023-07-05
  • 解决springboot+shiro+thymeleaf页面级元素的权限控制问题
    目录springboot+shiro+thymeleaf页面级元素的权限控制一直报这个异常下面贴一下关于shiro用到的包shiro整合thymeleaf常见权限控制标签使用spri...
    99+
    2024-04-02
  • 解决使用IDEA时跳转到.class的问题
    IDEA时跳转到.class的解决项目背景:jdk1.8软件环境:IDEA问题:两个不同的项目,在A项目中写了一个实体类。B项目中引用。我想修改下实体类的内容,就在在B项目中CTRL...
    99+
    2024-04-02
  • SpringMvc返回modelandview的页面无法跳转问题怎么解决
    这篇文章主要介绍了SpringMvc返回modelandview的页面无法跳转问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMvc返回modelandview的页面无法跳转问题怎么解决文...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作