我不能让spring-security显示我自己的登录页面。我已经尝试了几乎所有可用的解决方案。我不知道我的代码出了什么问题。
下面是代码和代码中的注解部分是我已经尝试过的。
Spring启动版本- 2.1.5
SecurityConfig.class
@EnableWebSecurity
@ComponentScan
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public UserDetailsService userDetailsService(){
return super.userDetailsService();
}
@Override
public void configure(HttpSecurity httpSecurity) throws Exception{
httpSecurity.
authorizeRequests()
.antMatchers("/resources/**","/login", "/home").permitAll()
.antMatchers("/user/**").hasRole("USER")
.and()
.formLogin().loginPage("/login").permitAll()
.defaultSuccessUrl("/user/dashboard")
.failureUrl("/login-error")
.and().logout().permitAll();
//////////// Tried this too /////////////////////////////////////
// httpSecurity.cors().disable()
// .csrf().disable()
// .httpBasic().disable()
// .authorizeRequests().antMatchers("/**").permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception{
authenticationManagerBuilder.userDetailsService(userDetailsService()).passwordEncoder(new BCryptPasswordEncoder());
}
}
视图控制器类:
@Controller
@RequestMapping("/")
public class ViewController {
@Autowired
UserRepository userRepository;
@RequestMapping(value = {"/home"})
public String showHome(){ return "home.html";}
@GetMapping(value = "/login")
public String showLogin(){
return "login.html";
}
我希望spring-security禁用自己的默认登录页面,并显示我的登录页面。
2条答案
按热度按时间cedebl8k1#
您需要配置WebMvcConfigurer
添加以下类作为您的配置,并覆盖addViewControllers方法
之后,允许访问安全配置中的资源
tct7dpnv2#
好吧,这很奇怪,但我刚刚创建了一个新的项目,复制旧的项目文件到新的一个和它的工作预期。