Spring Security,Boot:安全规则不能用作例外

时间:2017-05-19 06:59:20

标签: spring-mvc session spring-boot spring-security

我是初学者的新手,我正在尝试在我的应用程序中使用spring boot实现spring安全性和会话管理。

我的问题如下

  1. 如何在不登录应用程序的情况下限制静态文件夹的直接页面访问? 示例:localhost:8080 / view / pages / blank.html

  2. 我是否需要添加任何其他配置才能实现会话管理?此外,如何识别特定登录用户是否创建了会话?

  3. 我使用的弹簧安全版本是1.5.3.RELEASE。任何人都可以告诉我如何实现春季安全规则和会话管理。在此先感谢您的帮助

    以下是我在安全配置类中添加的代码,扩展了WebSecurityConfigurerAdapter

    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Autowired
        private UserDetailsService userDetailsService;
    
        @Override
        protected void configure(HttpSecurity httpSecurity) throws Exception {
            httpSecurity
            .csrf().disable()
            .authorizeRequests()
            .antMatchers("/login")
            .permitAll()
            .anyRequest()
            .authenticated()
            .and()      
            .formLogin()
            .loginPage("/login")
            .loginProcessingUrl("/homePage")
            .defaultSuccessUrl("/homePage")
            .permitAll()
            .and()
            .logout()
            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
            .logoutSuccessUrl("/login")
            .permitAll()    
            .and()
                        .sessionManagement()
                        .maximumSessions( 1 )
                        .expiredUrl( "/sessionExpired" )
                        .maxSessionsPreventsLogin( true )
                        .and()
                            .sessionCreationPolicy( SessionCreationPolicy.IF_REQUIRED );
        }
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception 
        {
            auth.userDetailsService(userDetailsService);
        }
    }
    

2 个答案:

答案 0 :(得分:0)

很难说出发生了什么,尝试启用日志记录

org.springframework.security: trace
org.springframework.web: trace

并发布您提出请求时打印的内容

答案 1 :(得分:-1)

尝试此代码,此处“ADMIN”是一个角色。根据您希望如何配置角色,它可以在春季“ROLE_ADMIN”。

 http.authorizeRequests()
        .antMatchers("/", "/login.html", "/logout.html").permitAll()
        .antMatchers("/index.html").hasAnyRole("ADMIN")      .and().formLogin().loginPage("/login.html").failureUrl("/login.html").defaultSuccessUrl("/index.html")
        .usernameParameter("strUserName").passwordParameter("strPassword")
    .and().csrf()
    .and().exceptionHandling().accessDeniedPage("/404");