Spring Security 注销后退按钮

2023-11-30

spring security有办法防止下面最后一点吗?我用的是3.0.5

- 用户登录我的网站 -用户转到网站中的任何页面并单击注销 -注销链接使用户会话无效并将其发送到我网站的登录页面 - 在同一浏览器中,用户导航到新网站(例如 cnn.com) - 用户点击后退按钮,他们登陆我的登录页面 - 用户再次点击后退按钮,他们最终会到达应用程序内的页面,该页面可能包含我们不希望出现的数据。如果他们单击页面上的任何链接,他们会立即被发送到登录页面,但他们可以从浏览器缓存中查看缓存的页面...有什么办法不让他们查看此页面吗?

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
    xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <context:annotation-config />
    <context:component-scan base-package="dc" />
    <global-method-security />
    <http access-denied-page="/auth/denied.html">
         <intercept-url filters="none" pattern="/javax.faces.resource/**" />
         <intercept-url filters="none" pattern="/services/rest-api/1.0/**" />
         <intercept-url filters="none" pattern="/preregistered/*"/>
         <intercept-url
            pattern="/**/*.xhtml"
            access="ROLE_NONE_GETS_ACCESS" />
         <intercept-url
            pattern="/auth/*"
            access="ROLE_ANONYMOUS,ROLE_USER"/>
         <intercept-url
            pattern="/preregistered/*"
            access="ROLE_ANONYMOUS,ROLE_USER"/>
         <intercept-url
            pattern="/registered/*"
            access="ROLE_USER"
            requires-channel="http"/>
        <form-login
            login-processing-url="/j_spring_security_check.html"
            login-page="/auth/login.html"
            default-target-url="/registered/home.html"
            authentication-failure-url="/auth/login.html" />
         <logout invalidate-session="true" 
              logout-url="/auth/logout.html" 
              success-handler-ref="DCLogoutSuccessHandler"/>
        <anonymous username="guest" granted-authority="ROLE_ANONYMOUS"/>
        <custom-filter after="FORM_LOGIN_FILTER" ref="xmlAuthenticationFilter" />
        <session-management session-fixation-protection="none"/>
    </http>
    <!-- Configure the authentication provider -->
    <authentication-manager alias="am">
        <authentication-provider user-service-ref="userManager">
                <password-encoder ref="passwordEncoder" />
        </authentication-provider>
        <authentication-provider ref="xmlAuthenticationProvider" />
    </authentication-manager>
</beans:beans>

下面的过滤器解决了我的情况:

package com.dc.api.service.impl;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class CacheControlFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

        HttpServletResponse resp = (HttpServletResponse) response;
        resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT");
        resp.setHeader("Last-Modified", new Date().toString());
        resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
        resp.setHeader("Pragma", "no-cache");

        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {}

    @Override
    public void init(FilterConfig arg0) throws ServletException {}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Security 注销后退按钮 的相关文章

随机推荐

  • 批处理脚本未按预期分配变量

    我正在编写一个批处理脚本 它将分配一个变量字符串 然后修剪它 我面临两个问题 变量分配不正确 它从变量文件中获取最后一个值 我第一次运行脚本时未分配变量 我需要第二次运行脚本以查看变量是否已分配 在第三次运行时 我可以看到修剪正在起作用 我
  • 将数据帧中的字符转换为时间戳

    我在数据框中有一个被识别为字符类的时间戳 由于某种原因 我无法将其转换为 poxis 时间戳 这是数据示例 ID dateTime stage 1 2016 11 01T00 00 00 000Z 4 82 2 2016 11 01T00
  • 如何使 Text::slug() 正确转换德语变音符号?

    我正在使用 CakePHP 3 6 当我使用带有德语变音符号的单词时 例如 Text slug Grundst cke 我会得到 Grundstucke 其中 u 但这是不正确的 我应该得到 Grundstuecke 其中 ue 是否有一个
  • 将整数数组传递给 ASP.NET Web API?

    我有一个 ASP NET Web API 版本 4 REST 服务 我需要在其中传递一个整数数组 这是我的操作方法 public IEnumerable
  • 多个 Mat Paginator 无法在 Angular 组件中工作

    我有三个不同的 div Post Todo User 根据用户选择我显示不同的表格 例如 默认情况下Post部分加载表100 records 如果用户选择Todo部分 表格应显示Todo记录等带有分页 I ve three datasour
  • R tableGrob 更改行的格式

    我有一些相对简单的代码来创建用于打印到 PDF 的表格 library gridExtra df lt head iris tableGrob df gp gpar fontsize 8 rows NULL 我想让最后一行的格式与标题行相同
  • 使用 Windows 批处理文件的单行多个命令

    我尝试了解批处理文件中单个命令行中的多个命令如何工作 dir md folder1 rename folder1 mainfolder 和其他具有类似命令的情况 但是 替换为 dir md folder1 rename folder1 ma
  • 为什么 Microsoft Azure(或一般的 Swift)无法更新变量以在表查询后返回?

    我一直在关注微软Azure文档成功查询表 将项目插入 读取和更新到数据库中工作正常 但在一个简单的方法结束时 立即关闭文档 func getAllEventIDs gt String var events String this is to
  • 基于 Django 类的 UpdateView 以及用于多个上传文件的表单

    针对我目前面临的问题 我有两个问题 django 中的最佳实践是覆盖 CreateView 中的 post 方法吗 如果不是 您是否在 CategoryFullForm 或 CreateView 中编写 form valid 函数 它会是什
  • 名称查找和类范围

    为什么setVal的返回类型是string类型 参数类型是double类型 typedef string Type Type initVal class Exercise public typedef double Type Type se
  • Ember renderTemplate 中继模型

    在这里努力开发我的 Ember 应用程序 一切进展顺利 但是 我遇到了意外行为的问题 并且不确定解决此问题的最佳方法 问题是在特定路线中 我想将另一条路线渲染到另一个出口 但是 我渲染到另一个出口的另一条路线并不保留它自己的模型 如果我这样
  • 如何在 Tensorflow 中将变量重用设置回 False?

    在Tensorflow中 我们可以将变量重用设置为True with tf get variable scope reuse variables 有什么方法可以在不离开范围的情况下将其设置回 False 吗 这不可能 在共享变量的教程中 他
  • 如何在 Linux 中转义 scp 复制路径中的空格?

    我想将文件从远程复制到本地系统 现在我在linux系统中使用scp命令 我有一些文件夹或文件名带有空格 当我尝试复制该文件时 它显示错误消息 没有这样的文件或目录 I tried scp email protected home 5105
  • Laravel 4 - 分页忽略 Fluent 中的不同

    我以清晰和分页的方式提出流畅的请求 我的问题是分页请求在不同的请求之前执行 我的流利要求 candidates DB table candidates gt select candidates gt distinct gt join can
  • 如何使 For-Each 循环向后运行

    我用 VBA 编写了一个小脚本 它根据列表检查给定范围内的单元格的值 如果单元格值与列表中的值匹配 则保留该单元格值 否则将其删除 我想知道如何让它向后运行 因为向前运行会产生问题 我对此进行了一些研究 并尝试将 Step 1 附加到开始
  • Matlab神经网络,如何强制使用某些集合进行训练、验证和测试?

    如果您使用 GUI nnstart 则仅提供输入和输出 但您无法决定哪些行将作为训练 验证和测试集 因为它们是随机选择的 如何手动指定它们 您可以使用从 NNSTART 启动的任何 GUI 来创建一些示例训练代码 然后通过设置以下数据划分值
  • 从 Base64 编码字符串中检索 ECC 公钥

    我一直在尝试创建一个实例java security PublicKey使用 Base64 编码的 ECC 公钥 MainActivity java Override protected void onCreate Bundle savedI
  • 生成的 SVG 图像不显示

    我正在开发一个 JavaScript 类来显示所有 SVG 对象 但是当我创建元素 image 时 浏览器不会显示它 但是 如果我复制生成的代码并将其放入另一个文档中 则会显示图像 当我使用 Firebug 的检查器搜索图像时 出现了对象但
  • EJB 3.1:是否允许将 Bean 注入到不受容器管理的资源中?

    我使用的是 JBoss 6 1 它不完全符合 EJB 3 1 截至目前 我无法通过以下方式将 EJB 注入到我的 Struts 操作类 或任何非 Java EE 容器管理的类中 EJB 但是当 EJB 3 1 规范完全实现时这可能吗 如果没
  • Spring Security 注销后退按钮

    spring security有办法防止下面最后一点吗 我用的是3 0 5 用户登录我的网站 用户转到网站中的任何页面并单击注销 注销链接使用户会话无效并将其发送到我网站的登录页面 在同一浏览器中 用户导航到新网站 例如 cnn com 用