Spring Security,Boot:安全规则无法正常工作

Posted

技术标签:

【中文标题】Spring Security,Boot:安全规则无法正常工作【英文标题】:Spring Security, Boot: Security Rules not working as excepted 【发布时间】:2017-10-19 04:39:22 【问题描述】:

我对 Spring Boot 很陌生,我正在尝试在我的应用程序中使用 Spring Boot 来实现 Spring Security 和会话管理。

我的问题如下

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

    是否需要添加任何额外的配置来实现会话管理?另外如何识别特定登录用户是否创建了会话?

我使用的 Spring Security 版本是 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);
    

【问题讨论】:

请提问。还要描述你的代码的结果是什么(可能需要输出) 我已经修改了我的问题,请看一下 【参考方案1】:

很难判断发生了什么,请尝试启用日志记录

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

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

【讨论】:

【参考方案2】:

试试这段代码,这里的“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");

【讨论】:

以上是关于Spring Security,Boot:安全规则无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Security 禁用安全性

安全框架Spring Boot 整合 Spring Security

spring boot + thymeleaf +security自定义规则 的简单使用

spring boot + thymeleaf +security自定义规则 的简单使用

Spring Boot中开启Spring Security

Spring Boot如何集成Security实现安全认证