zxpnet网站 zxpnet网站
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

zxpnet

一个爱学习的java开发攻城狮
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 大后端课程视频归档
  • 南航面试题
  • 并发编程

  • 性能调优

  • java8语法

  • lombok

  • 日志

  • 工具类

  • spring

  • mybatis

  • springboot

  • redis

  • zookeeper

  • springcloud

  • dubbo

  • netty

  • springsecurity

    • springsecurity基本使用及个性化登录配置
    • 微服务安全与实战

    • springsecurity认证流程分析
    • springsecurity过滤器链分析
    • springsecurity图形验证码
    • springsecurity记住我RememberMe功能
    • springsecurity手机验证码登陆
    • springsecurity httpFirewall
    • springsecurity漏洞保护
    • Untitled
    • 跨域问题
    • Springsecurity Session会话管理
    • springsecurity控制授权
    • 权限模型
    • springseuciryt oauth2基础
    • 基于JWT实现SSO单点登录
    • springsocial第三方登陆
    • springsecurity退出登陆
      • 默认退出登陆处理逻辑
      • 与退出登陆相关的配置
        • 在配置文件里自定义退出登陆的一些处理逻辑
        • 对涉及到的URL进行授权
        • 自定义的退出成功处理器
      • 高阶用法
    • Spring security 集成 JustAuth 实现第三方授权登录
    • Spring Boot+CAS 单点登录
    • Springsecurity常见错误
  • mq消息中间件

  • shiro

  • beetle

  • 模板引擎

  • jpa

  • 数据结构与算法

  • 数据库知识与设计

  • gradle

  • maven

  • bus

  • 定时任务

  • docker

  • centos

  • 加解密

  • biz业务

  • pigx项目

  • 开源项目

  • 品达通用权限项目-黑马

  • 货币交易项目coin-尚学堂

  • php

  • backend
  • springsecurity
shollin
2021-07-09
目录

springsecurity退出登陆

  • 默认退出登陆处理逻辑
  • 与退出登陆相关的配置
    • 在配置文件里自定义退出登陆的一些处理逻辑
    • 对涉及到的URL进行授权
    • 自定义的退出成功处理器
  • 高阶用法

# 默认退出登陆处理逻辑

Spring Security的退出登陆功能由LogoutFilter过滤器拦截处理,默认的退出登陆url为 /logout。

在退出登陆时会做如下几件事:

1、使当前session失效 2、清除当前用户的remember-me记录 3、清空当前的SecurityContext 4、重定向到登录界面

# 与退出登陆相关的配置

# 在配置文件里自定义退出登陆的一些处理逻辑

.and()
   //退出登陆相关的逻辑
   .logout()
   //自定义退出的url---默认的为/logout
   .logoutUrl("/signOut")
   //自定义退出成功处理器
   .logoutSuccessHandler(logoutSuccessHandler)
   //自定义退出成功后跳转的url与logoutSuccessHandler互斥
   //.logoutSuccessUrl("/index")
   //指定退出成功后删除的cookie
   .deleteCookies("JSESSIONID")

1
2
3
4
5
6
7
8
9
10
11
12

# 对涉及到的URL进行授权

//配置不用进行认证校验的url
.antMatchers(
   SecurityConstants.DEFAULT_UNAUTHENTICATION_URL,
   SecurityConstants.DEFAULT_LOGIN_PROCESSING_URL_MOBILE,
   nrscSecurityProperties.getBrowser().getLoginPage(),
   SecurityConstants.DEFAULT_VALIDATE_CODE_URL_PREFIX + "/*",
   nrscSecurityProperties.getBrowser().getSignUpUrl(),
   //session失效默认的跳转地址
   nrscSecurityProperties.getBrowser().getSession().getSessionInvalidUrl(),
   //获取第三方账号的用户信息的默认url
   SecurityConstants.DEFAULT_GET_SOCIAL_USERINFO_URL,
   //退出登陆默认跳转的url
   nrscSecurityProperties.getBrowser().getSignOutUrl(),
   "/user/register",
   "/js/**"
)
.permitAll()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 自定义的退出成功处理器

package com.nrsc.security.browser.logout;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.nrsc.security.utils.ResultVOUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.Result;
import java.io.IOException;

/**
 * @author : Sun Chuan
 * @date : 2019/9/22 12:00
 * Description:退出成功处理器
 */
@Slf4j
public class NRSCLogoutSuccessHandler implements LogoutSuccessHandler {
    /**
     * 退出登陆url
     *      可以在yml或properties文件里通过nrsc.security.browser.signOutUrl 进行指定
     *      我指定的默认值为"/" --- 因为如果不指定一个默认的url时,配置授权那一块会报错
     */
    private String signOutSuccessUrl;
    private ObjectMapper objectMapper = new ObjectMapper();
    public NRSCLogoutSuccessHandler(String signOutSuccessUrl) {
        this.signOutSuccessUrl = signOutSuccessUrl;
    }

    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {

        log.info("退出成功");
        //如果没有指定退出成功的页面则返回前端一个json字符串
        if (StringUtils.equalsIgnoreCase("/",signOutSuccessUrl)) {
            response.setContentType("application/json;charset=UTF-8");
            response.getWriter().write(objectMapper.writeValueAsString(ResultVOUtil.success("退出成功")));
        } else {
            //重定向到退出成功登陆页面
            response.sendRedirect(signOutSuccessUrl);
        }
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# 高阶用法

参考文章

spring-security退出登陆_nrsc-CSDN博客_security退出登录 (opens new window)

SpringBoot+Spring Security退出登录/自定义退出 - 心田已荒的个人空间 - OSCHINA - 中文开源技术交流社区 (opens new window)

springsocial第三方登陆
Spring security 集成 JustAuth 实现第三方授权登录

← springsocial第三方登陆 Spring security 集成 JustAuth 实现第三方授权登录→

最近更新
01
国际象棋
09-15
02
成语
09-15
03
自然拼读
09-15
更多文章>
Theme by Vdoing | Copyright © 2019-2023 zxpnet | 粤ICP备14079330号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式