如何在Spring启动时实现基本身份验证?

时间:2015-07-01 05:43:56

标签: java angularjs spring-security spring-boot

我已经按照thisthis教程创建了一个带有基于Java的后端的Angular.JS应用程序的框架。它的代码可以找到here

它具有身份验证 - 在开始时Spring启动会向控制台写入随机密码,您可以使用该密码登录已启动的应用程序。用户名为user,密码在开头的控制台中打印:

Console output

现在我希望有几个具有固定密码的用户帐户(如果它们是硬编码的,则可以。)

如何在不破坏与AngularJS的兼容性的情况下在该应用程序中执行此操作?

我想我必须修改UiApplication中的SecurityConfiguration并使用

之类的内容
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
        .withUser("user")
        .password("password")
        .roles("USER");
}

解释here,但我不确定它是否会破坏AngularJS。

3 个答案:

答案 0 :(得分:1)

这就是解决方案:

@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
class SecurityConfiguration extends
    WebSecurityConfigurerAdapter {


    @Autowired
    public void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user1")
            .password("password1")
            .roles("ADMIN")
            .and()
            .withUser("user2")
            .password("password2")
            .roles("USER");
    }

答案 1 :(得分:0)

只要您不更改身份验证方案(即BASIC,FORM等),AngularJS就不关心您如何管理后端的用户帐户。当然,如果您使用固定的用户和密码并在AngularJS代码中对其进行硬编码,则必须对其进行更改。

答案 2 :(得分:0)

它不会破坏角度兼容性。但除了您提到的代码更改之外,您还需要确保允许匿名访问/ login URI。还需要更改重载的配置方法,如下所示:

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    .httpBasic()
  .and()
    .authorizeRequests()
      .antMatchers("/login.html").permitAll()
  .antMatchers("/index.html", "/home.html").authenticated()
      .antMatchers("/index.html", "/home.html").hasRole("USER")
      .anyRequest().authenticated();
}