我已经按照this和this教程创建了一个带有基于Java的后端的Angular.JS应用程序的框架。它的代码可以找到here。
它具有身份验证 - 在开始时Spring启动会向控制台写入随机密码,您可以使用该密码登录已启动的应用程序。用户名为user
,密码在开头的控制台中打印:
现在我希望有几个具有固定密码的用户帐户(如果它们是硬编码的,则可以。)
如何在不破坏与AngularJS的兼容性的情况下在该应用程序中执行此操作?
我想我必须修改UiApplication中的SecurityConfiguration
并使用
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER");
}
解释here,但我不确定它是否会破坏AngularJS。
答案 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();
}