【发布时间】:2019-06-14 00:50:05
【问题描述】:
我有一个 Spring Boot 后端和一个基于 Angular 5 的前端。 我想使用 Spring Security 进行身份验证和授权。 我希望在 Angular(http://localhost:4200/login) 中自定义登录表单。 我想在数据库中有用户及其密码和角色。 我不明白如何告诉 Spring 登录页面位于不同的域中(在前端)。 我应该在 RestController 类中定义一个 /login 还是在 Spring Security 中默认有一个 /login 允许对用户进行身份验证? 请帮忙。
我从测试配置开始:内存中的用户:
package smart.syndic.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.inMemoryAuthentication()
.withUser("admin").password("1234")
.roles("ADMIN");
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/login/**", "/administrateurs/**").permitAll()
.and()
.authorizeRequests().antMatchers(HttpMethod.GET, "/users").permitAll()
.and()
.exceptionHandling().accessDeniedPage("/forbidden")
.and()
.authorizeRequests().anyRequest().authenticated();
}
}
【问题讨论】:
标签: java angular spring-boot spring-security