Java Spring Security';在访问受保护的URL时未调用s身份验证筛选器

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

用户可以访问安全的URL,而无需提示登录。 下面是这样一个URL的示例,应该提示用户登录该URL,但它是在没有身份验证的情况下访问的

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[] { "/" };
    }

}