繁体   English   中英

在 Spring Boot 中实现“注销”功能

[英]Implement 'logout' functionality in Spring Boot

为了获得基本的安全功能,我在 pom.xml 中添加了以下启动包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

并向 application.properties 添加以下两个属性:

security.user.name=访客
security.user.password=tiger

现在,当我点击主页时,我得到了登录框并且登录按预期工作。

现在我想实现“注销”功能。 当用户点击链接时,他/她会被注销。 我注意到登录没有在我的浏览器中添加任何 cookie。 我假设 Spring Security 为用户创建了一个 HttpSession 对象。 真的吗? 我是否需要“无效”此会话并将用户重定向到其他页面? 在基于 Spring Boot 的应用程序中实现“注销”功能的最佳方法是什么?

迟到总比不到好。 Spring Boot 为您默认了许多安全组件,包括 CSRF 保护。 其中一件事是强制 POST 注销,请参见此处: http : //docs.spring.io/spring-security/site/docs/3.2.4.RELEASE/reference/htmlsingle/#csrf-logout

正如这表明您可以使用以下内容覆盖它:

http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")                                      
.anyRequest().fullyAuthenticated()
.and()
.formLogin().loginPage("/login").failureUrl("/login?error").permitAll()
.and()
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login");

最后一行是重要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM