为了使基本安全功能正常工作,我将以下启动包添加到我的pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
并将以下两个属性添加到application.properties:
security.user.name =旅客
security.user.password =虎
现在,当我点击主页时,我会看到登录框并按预期登录。
现在我想实现'注销'功能。基本上,当用户点击链接时,她会被注销。我注意到登录不会在我的浏览器中添加任何cookie。我假设Spring Security为用户创建了一个HttpSession对象。真的吗?我是否需要“使此会话无效”并将用户重定向到其他页面?在基于Sprint Boot的应用程序中实现“注销”功能的最佳方法是什么?
答案 0 :(得分:76)
迟到总比没有好。 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");
最后一行是重要的一行。