Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring安全性:似乎忽略了身份验证页面_Java_Spring_Security_Authentication_Authorization - Fatal编程技术网

Java Spring安全性:似乎忽略了身份验证页面

Java Spring安全性:似乎忽略了身份验证页面,java,spring,security,authentication,authorization,Java,Spring,Security,Authentication,Authorization,我正在使用Spring Security编写一个应用程序。 我已经实现了自定义UserDetails、UserDetailsService、AccessDecisionVoter和WebSecurity配置适配器。 我想允许未经授权的用户访问/authentication/login页面以登录,但对页面的每一次访问都需要由自定义AccessDecisionVoter处理。 我的自定义WebSecurity配置适配器类如下所示: @Configuration @EnableWebSecurity

我正在使用Spring Security编写一个应用程序。 我已经实现了自定义UserDetails、UserDetailsService、AccessDecisionVoter和WebSecurity配置适配器。 我想允许未经授权的用户访问
/authentication/login
页面以登录,但对页面的每一次访问都需要由自定义AccessDecisionVoter处理。
我的自定义WebSecurity配置适配器类如下所示:

@Configuration
@EnableWebSecurity
@ComponentScan(value = "security")
public class Configuration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsServiceImpl userDetailsServiceImpl;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/authentication/login**")
                .permitAll()
                .and()
            .authorizeRequests()
                .anyRequest()
                .authenticated()
                .accessDecisionManager(accessDecisionManager())
        ;
    }


    @Bean
    public AccessDecisionManager accessDecisionManager() {
        List<AccessDecisionVoter<? extends Object>> decisionVoters =
                Arrays.asList(new AccessDecisionVoterImpl());
        return new UnanimousBased(decisionVoters);
    }


    @Override
    protected void configure(AuthenticationManagerBuilder auth) {
        try {
            auth.userDetailsService(userDetailsServiceImpl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Bean
    public UserDetailsServiceImpl userDetailsService() {
        return userDetailsServiceImpl;
    }

}
@配置
@启用Web安全性
@组件扫描(value=“安全”)
公共类配置扩展了WebSecurity配置适配器{
@自动连线
私有用户详细信息ServiceImpl用户详细信息ServiceImpl;
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http.authorizeRequests()
.antMatchers(“/authentication/login**”)
.permitAll()
.及()
.授权请求()
.anyRequest()
.authenticated()
.accessDecisionManager(accessDecisionManager())
;
}
@豆子
公共访问决策管理器访问决策管理器(){

列表我相信,按照您的设置方式,permitAll只允许所有请求(即使是未经验证的请求)但它不会禁用该请求的安全链,它仍会尝试处理所有请求。如果您只是想绕过所有安全性,我通常使用的方法是覆盖webSecurity配置方法并在其中添加异常情况,如下所示:

@Override
public void configure(WebSecurity webSecurity) throws Exception
{
    webSecurity
        .ignoring()
        .antMatchers("/authentication/login**");
}