Spring Seurity(三)

用户登出

编写页面

在这里插入图片描述

代码示例

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="container">
    <main role="main">
        <div class="jumbotron">
            <div class="col-sm-12 mx-auto text-center">
                <p>系统登出成功。如您想继续其它操作,请重新<a href="login.html" th:href="@{/login}">登录</a></p>
            </div>
        </div>
    </main>
</div>
</body>
</html>

主要

在Spring Security中的config文件中修改一下configure方法中改成如下代码

http.logoutSuccessUrl("/logout_success").permitAll()
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .formLogin().loginPage("/login").defaultSuccessUrl("/index").permitAll()
                .and()
                .authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .logout()
				//下面这个是主要代码,这是Spring Security中给下面这个html开放权限设置
                .logoutSuccessUrl("/logout_success")
                .permitAll()
                .and()
                .csrf().disable()
        ;
    }

在写一个Controller实现类访问到logout_success页面即可
实现展示图如下,当我们登陆进去主页面之后点击退出登陆按钮会跳转到上面这个页面
在这里插入图片描述

SuccessHandler用法

微信中有一个登陆过后会有一个提示,比如异地登陆的风险提示,这里做一个简单的案例
在刚刚的config文件中在加入一串代码,如下

主要

http.formLogin().successHandler(customAuthenticationSuccessHandler())

加入AuthenticationSuccessHandler方法

加入之后在此类中在写入一个AuthenticationSuccessHandler方法,具体代码如下

    @Bean
    public AuthenticationSuccessHandler customAuthenticationSuccessHandler() {
    	//编写一个CustomSavedRequestAwareAuthenticationSuccessHandler,这个类用于获取想要的信息
        CustomSavedRequestAwareAuthenticationSuccessHandler customSavedRequestAwareAuthenticationSuccessHandler = new CustomSavedRequestAwareAuthenticationSuccessHandler();
        customSavedRequestAwareAuthenticationSuccessHandler.setDefaultTargetUrl("/index");
        return customSavedRequestAwareAuthenticationSuccessHandler;
    }

CustomSavedRequestAwareAuthenticationSuccessHandler类具体代码如下

编写CustomSavedRequestAwareAuthenticationSuccessHandler实现类

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.time.LocalDateTime;

/**
 * @Author uncletj
 * @Date 2021/3/18 9:24
 * @Version SpringBoot 2.2.2
 * @projectName
 */
public class CustomSavedRequestAwareAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

//这个类我只是写了一个简单的输出语句,根据项目具体需求可编写方法加入到此方法内进行实现(如:微信提示,短信提示等)
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {
        super.onAuthenticationSuccess(request, response, authentication);
        this.logger.info(String.format("IP %s,用户 %s, 于 %s 成功登录系统,如非本人操作,请立即访问网页修改密码", request.getRemoteHost(), authentication.getName(), LocalDateTime.now()));
    }
}

紧接着就启动项目测试看一下效果如何
在这里插入图片描述
当我们登录进来之后后台应该需要执行刚刚所编写的方法,效果如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

藤井大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值