Java Spring Security';在访问受保护的URL时未调用s身份验证筛选器
用户可以访问安全的URL,而无需提示登录。 下面是这样一个URL的示例,应该提示用户登录该URL,但它是在没有身份验证的情况下访问的Java Spring Security';在访问受保护的URL时未调用s身份验证筛选器,java,spring,spring-security,Java,Spring,Spring Security,用户可以访问安全的URL,而无需提示登录。 下面是这样一个URL的示例,应该提示用户登录该URL,但它是在没有身份验证的情况下访问的 http://localhost:9090/HospitalProject/web/patient/home 安全配置: @配置 @启用Web安全性 公共类SecurityConfig扩展了WebSecurity配置适配器{ @自动连线 环境环境; @自动连线 public void configureAuthentication(AuthenticationM
http://localhost:9090/HospitalProject/web/patient/home
安全配置:
@配置
@启用Web安全性
公共类SecurityConfig扩展了WebSecurity配置适配器{
@自动连线
环境环境;
@自动连线
public void configureAuthentication(AuthenticationManagerBuilder auth)引发异常{
认证
.inMemoryAuthentication()
.withUser(“根用户”)
.password(“root”)
.角色(“管理员”);
认证
.inMemoryAuthentication()
.withUser(“notroot”)
.password(“notroot”)
.角色(“超级管理员”);
}
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
.csrf().disable()
.授权请求()
.antMatchers(“/web/login”).permitAll()
.antMatchers(“/web/**”).access(“hasRole('ADMIN')或hasRole('SUPER_ADMIN'))
.及()
.formLogin()
.loginPage(“/web/login”)
.loginProcessingUrl(“/web/login”)
.usernameParameter(“用户名”)
.passwordParameter(“密码”)
.及()
.logout().logoutSuccessUrl(“/login?logout”);
}
}
安全初始值设定项:
public class SecurityWebApplicationIntializer extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationIntializer() {
super(SecurityConfig.class);
}
}
控制器:
@Controller
public class MasterController {
@GetMapping(value={"/", "/web/login"})
public ModelAndView loginForm(){
ModelAndView mv = new ModelAndView("login");
mv.addObject("loginForm", new LoginForm());
return mv;
}
}
有什么遗漏的线索吗?将管理员的角色权限分离到不同的url 试试看 如果使用SpringMVC,则需要将SecurityConfig添加到xxxServletInitializer,而不是AbstractSecurityWebApplicationInitializer
public class SpringMvcInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
公共类springmvcinInitializer
扩展AbstractAnnotationConfigDispatcherServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回新类[]{SecurityConfig.Class};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回null;
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
您正在使用spring mvc吗?
public class SpringMvcInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}