当前位置: 首页 > 知识库问答 >
问题:

即使在注销后也可以访问Spring安全欢迎页面

隆宏爽
2023-03-14

我是Spring安保的新手。我在学习这个教程

http://www.mkyong.com/spring-security/spring-security-form-login-example/

一切正常,当我们请求欢迎页面时,它会重定向到登录表单,然后输入凭据后会显示欢迎page.The问题是,当我点击注销时,它会注销,但欢迎页面仍然可以访问,我们点击...@localhost /SpringSecurity2/welcome,它不要求登录。我想它与会话有关,但不知道如何解决这个问题。我还使用了delete-cookies="JSESSIONID",但它不起作用。

我只想当用户注销并再次点击欢迎url.he应该被定向到登录表单而不是欢迎页面,因为它需要身份验证。很快需要帮助,我的安全xml如下

<?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: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/security
    http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">

    <http auto-config="true">
        <intercept-url pattern="/welcome*" access="ROLE_USER" />
        <form-login login-page="/login" default-target-url="/welcome"
            authentication-failure-url="/loginfailed" />
        <logout 
        logout-success-url="/logout" />

    </http>

    <authentication-manager>
      <authentication-provider>
        <user-service>
            <user name="mkyong" password="123456" authorities="ROLE_USER" />
        </user-service>
      </authentication-provider>
    </authentication-manager>

</beans:beans>

共有1个答案

谭修然
2023-03-14

最好的方法是通过实现< code > javax . servlet . filter 类来编写< code>SessionFilter类,如下所示。

package com.filter;
public class SessionFilter implements Filter {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain arg2) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        HttpSession session = request.getSession(false);
        if(null == session){
            response.sendRedirect("/login.html");
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }
}

并在您的网络.xml文件中提及它,如下所示

<filter>
    <filter-name>SessionFilter</filter-name>
    <filter-class>com.filter.SessionFilter   
</filter-class>

不要忘记使用下面的语句使你的会话在注销控制器中失效

request.getSession().invalidate();

希望这能解决你的问题

 类似资料:
  • 4.2.4注销处理 logout元素通过导航到特定URL添加了对注销的支持。默认的注销URL是/logout,但是您可以使用logout-url属性将其设置为其他内容。有关其他可用属性的更多信息可以在命名空间附录中找到。 但是,在遵循文档中的安全设置后,URL/logout不会显示注销页面。相反,它显示 Spring Framework 4.1.6 Spring Security 4.0.0 we

  • 1.1 安装 faygo 1.1.1 安装要求 Go Version ≥1.8 1.1.2 安装 方式一 源码下载 go get -u -v github.com/henrylee2cn/faygo 方式二 部署工具 (Go to fay) go get -u -v github.com/henrylee2cn/fay fay command [arguments] The com

  • 问题内容: 在我的Web应用程序中,当我尝试注销时,它转到而不是给定的页面。在我的页面中,我添加了 问题是,当我使用spring security 3.1.4.RELEASE 版本时,此问题较早 起作用 。现在我正在使用 3.2.2.RELEASE 我也尝试了以下方法。没工作 spring-security.xml 提前致谢。 问题答案: 启用S​​pring Security CSRF保护后,必

  • 我正在创建一个如下所示的JobDetail,

  • 该站点的目标是成为 Jekyll 的全面指南。包括一些内容如:搭建和运行你的站点、创建以及管理内容、定制站点的展现和外观、在不同的环境中发布、以及参与到 Jekyll 将来的开发的一些建议。 Jekyll 究竟是什么? Jekyll 是一个简单的博客形态的静态站点生产机器。它有一个模版目录,其中包含原始文本格式的文档,通过一个转换器(如 Markdown)和我们的 Liquid 渲染器转化成一个完

  • 欢迎来到 Libra 开发者站点! Libra 的使命是建立一套简单的全球货币和金融基础设施,为数十亿人服务。 The world truly needs a reliable digital currency and infrastructure that together can deliver on the promise of “the internet of money.” Securi