Spring Seurity系列(二十)退出登录的处理

SpringSocial默认的退出的Url为logOut,并且退出成功后跳转的Url是登录页面的Url+?logOut的形式。

所以在浏览器的安全配置类中添加如下配置:

.logout()
		.logoutUrl("/signOut")
		.logoutSuccessHandler(logoutSuccessHandler)//退出成功后自定义的处理逻辑
//		.logoutSuccessUrl("退出成功跳转的Url")//两者配置一个就可以
		.deleteCookies("JSESSIONID")//同时删除Cookie
		.and()

创建ImoocLogoutSuccessHandler 实现 LogoutSuccessHandler用来处理退出的逻辑处理,是返回json还是根据用户的配置返回Html

public class ImoocLogoutSuccessHandler implements LogoutSuccessHandler {

	private Logger logger = LoggerFactory.getLogger(getClass());

	public ImoocLogoutSuccessHandler(String signOutSuccessUrl) {
		this.signOutSuccessUrl = signOutSuccessUrl;
	}

	private String signOutSuccessUrl;
	
	private ObjectMapper objectMapper = new ObjectMapper();

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

		logger.info("退出成功");
		//退出登录的Url如果是默认的空,那么返回的是json数据
		if (StringUtils.isBlank(signOutSuccessUrl)) {
			response.setContentType("application/json;charset=UTF-8");
			response.getWriter().write(objectMapper.writeValueAsString(new SimpleResponse("退出成功")));
		} else {
			response.sendRedirect(signOutSuccessUrl);
		}

	}

}

并在BrowserSecurityBeanConfig类中做相应的Bean的注入:

@Bean
	@ConditionalOnMissingBean(LogoutSuccessHandler.class)
	public LogoutSuccessHandler logoutSuccessHandler(){
		return new ImoocLogoutSuccessHandler(securityProperties.getBrowser().getSignOutUrl());
	}

接下来在BrowserProperties类中配置退出成功后跳转的Url,默认为空,是返回json:

public class BrowserProperties {
	
	private String signUpUrl = "/imooc-signUp.html";
	
	private String signOutUrl;//退出的url,默认为空

在项目的Index.html中增加退出的链接:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	index<br>
	
	<a href="/signOut">退出</a>
</body>
</html>

在配置文件中配置退出成功跳转的Url,如果不配置是默认返回json:

#退出的Url
imooc.security.browser.signOutUrl = /demo-logout.html

启动项目并测试,成功。

说明:本系列博客是记录慕课网中的教程的学习,以便我自己复习回忆。文中涉及的一些细节问题请参考慕课网中相关视频。

贴出慕课网视频教程地址: http://coding.imooc.com/class/134.html

猜你喜欢

转载自blog.csdn.net/newhanzhe/article/details/81323925