spring security起步四:退出登录配置以及logout属性详解

用户退出登录实质是使当前登录用户的session失效的操作。一般来说,用户退出后,将会被重定向到站点的非安全保护页,比如登录页面.

用户退出功能实现

增加hader.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
    <c:url value="/logout" var="logoutUrl"/>
    <a href="${logoutUrl }">退出系统</a>
</body>
</html>
引入至index.jsp
<body>
    <%@include file="header.jsp" %>
    ...
    ...
    ...
配置spring security logout 属性

spring-security.xml

...
...
<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/*" access="hasRole('ROLE_USER')" />
    <form-login login-page="/loginPage" login-processing-url="/login"
        always-use-default-target="true" default-target-url="/welcome"
        authentication-failure-url="/loginPage?error=error" />
    <logout logout-url="/logout" logout-success-url="/loginPage" invalidate-session="true"/>
    <csrf disabled="true" />
</http>
...
...

现在我们启动项目,登录成功后可以看到如下页面
这里写图片描述
点击退出登录,会返回到登录页面。

logout 属性详解

  1. logout-url LogoutFilter要读取的url,也就是指定spring security拦截的注销url
  2. logout-success-url 用户退出后要被重定向的url
  3. invalidate-session 默认为true,用户在退出后Http session失效
  4. success-handler-ref 对一个LogoutSuccessHandler的引用,用来自定义退出成功后的操作

这里需要注意的一点是,spring security 3.x默认的注销拦截url为/j_spring_security_logout,而4.x则默认使用/logout

spring security退出功能相关类

spring security实现注销功能涉及的三个核心类为LogoutFilter,LogoutHandler,LogoutSuccessHandler

LoginFilter是实现注销功能的过滤器,默认拦截/logout或者logout属性logout-url指定的url

LogoutHandler接口定义了退出登录操作的方法

void logout(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication);

LogoutSuccessHandler接口定义了注销之后的操作方法

void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException;

它们之间的类结构图:
这里写图片描述

spring security退出功能实现流程

spring security在实现注销功能时,大致流程如下
1. 使得HTTP session失效(如果invalidate-session属性被设置为true);
2. 清除SecurityContex(真正使得用户退出)
3. 将页面重定向至logout-success-url指明的URL。

源码下载地址https://github.com/SmallBadFish/spring_security_demo/archive/0.2.0-logout.zip

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值