spring-security关闭登录框

事情要从同事的一个项目说起,项目中需要集成公司的单点登录系统,但是无论如何都无法跳转到正常的登录页面。相反,却始终跳转到另外一个登录页面。

image-20210509174632536

但是代码却非常简单,简化一下

@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,那要如何登录呢,以及要如何关闭这个登录框呢?

第一个问题,如何登录?

我们从启动日志中,可以看到有一条这样的日志

image-20210509175214884

所以,这个就是登录用到的密码。那用户名是什么呢? 这个可以进入UserDetailsServiceAutoConfiguration看看究竟。

image-20210509175414573

然后继续进入SecurityProperties.User看看。

image-20210509175524194

可以从代码中看到,如果不做任何配置,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关闭登录。

可以在启动类上添加

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})

或者是在application.properties文件中添加

spring.autoconfigure.exclude=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肯定是有业务需要的,可以定制化登录校验信息。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

51iwowo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值