spring-security关闭登录框的实现⽰例
事情要从同事的⼀个项⽬说起,项⽬中需要集成公司的单点登录系统,但是⽆论如何都⽆法跳转到正常的登录页⾯。相反,却始终跳转到另外⼀个登录页⾯。
但是代码却⾮常简单,简化⼀下
@Controller
public class SecurityTestController {
@GetMapping("/myLogin")
public String login() {
return "login";
}
@GetMapping("/")
public String homePage() {
return "homePage";
}
}
发现⽆论是"/myLogin"还是"/"都绕不过登录,即使打了断点也进⼊不了两个⽅法。
由于之前没有接触过securtiy,还以为是公司另外⼀个登录系统,让同事输⼊公司域账户和密码,却怎么也⽆法进⼊。最后还是同事通过搜索"please sign in" + "spring"的关键词才知道这个是securtiy。
那既然知道是spring boot 的security,那要如何登录呢,以及要如何关闭这个登录框呢?
第⼀个问题,如何登录?
我们从启动⽇志中,可以看到有⼀条这样的⽇志
所以,这个就是登录⽤到的密码。那⽤户名是什么呢?这个可以进⼊UserDetailsServiceAutoConfiguration看看究竟。
然后继续进⼊SecurityProperties.User看看。
可以从代码中看到,如果不做任何配置,Spring Security的User信息,name是user,⽽paasword是UUID,这个会在启动⽇志中打印。
在登录框中,输⼊"user" + ⽇志中的密码,即可正常登录。
定义⽤户名和密码
对于登录名和密码,可以通过在application.properties⽂件中指定
spring.security.user.name=admin
spring.security.user.password=admin
第⼆个问题,有没有办法关闭登录?
关闭⾃动配置
当我们仅仅引⼊了Spring Securtiy的Starter,就发现访问会存在输⼊框。⼀定是SpringBoot的autoConfig帮我们配置了⼀些东西。那么可以通过关闭Securtiy的autoConfig关闭登录。
可以在启动类上添加spring framework是什么系统
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
或者是在application.properties⽂件中添加
lude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
注意到我的项⽬中,除了SecurityAutoConfiguration被排除掉外,还有ManagementWebSecurityAutonConfiguration被排除,这个类是Actuator引⼊的。如果项⽬中有使⽤Actuator,那么就需要同时排除掉ManagementWebSecurityAutonConfiguration。
定制WebSecurityConfigureAdapter关闭登录框
@Component
public class MySecurtiyConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
/
/ 正常配置其他安全相关的内容
// 将登录框关闭
http.formLogin().disable();
}
}
这⾥推荐使⽤第⼆种⽅式,因为引⼊Spring-security肯定是有业务需要的,可以定制化登录校验信息。
到此这篇关于spring-security关闭登录框的实现⽰例的⽂章就介绍到这了,更多相关spring security关闭登录框内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。