如何使用spring security根据角色限制对html页面的访问?

Posted

技术标签:

【中文标题】如何使用spring security根据角色限制对html页面的访问?【英文标题】:How to restrict access to html pages based on roles with spring security? 【发布时间】:2016-12-26 19:28:35 【问题描述】:

我希望用户能够根据他们的角色访问 html 页面。例如,只有 HR 角色才能查看 settings.html 页面,只有管理者才能看到 pendingrequest.html。

这是我的安全配置:

    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
    public class SecurityConfig extends WebSecurityConfigurerAdapter 

        @Autowired
        private DatabaseAuthenticationProvider authenticationProvider;


        @Override
        public void configure(WebSecurity web) throws Exception 

            web.ignoring().antMatchers("/js/**", "/css/**", "/img/**");
        

        @Override
        protected void configure(HttpSecurity http) throws Exception 
            http.formLogin().loginPage("/login").failureUrl("/login").defaultSuccessUrl("/")
                    .and().logout().logoutSuccessUrl("/login")
                    .and().authorizeRequests().antMatchers("/login").permitAll()
                    .antMatchers("/settings.html").hasRole("HR")
                    .antMatchers("/pendingRequests.html").hasRole("MANAGER")
                    .antMatchers("/settings.html","/pendingRequests.html").hasRole("ADMIN")
                    .anyRequest().authenticated().and().csrf().disable();
        



 @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception 

        auth.authenticationProvider(authenticationProvider).eraseCredentials(false);
    

由于某种原因,我在那里尝试的方法不起作用,无论我担任什么角色,我都看不到这些页面。

【问题讨论】:

【参考方案1】:

Spring security 默认为安全检查中定义的所有角色添加ROLE_ 前缀。

您可以将角色名称重命名为具有 ROLE_ 前缀或从配置中删除该前缀 (How do I remove the ROLE_ prefix from Spring Security with JavaConfig?)

【讨论】:

以上是关于如何使用spring security根据角色限制对html页面的访问?的主要内容,如果未能解决你的问题,请参考以下文章

使用spring security进行身份验证后如何根据角色进行重定向[重复]

Swagger + Spring security - 基于角色隐藏方法

如何通过上下文更改 Spring Security 角色?

如何使用 Spring Security 在我的控制器中获取用户登录的角色

Spring Security @PreAuthorize基于自定义布尔属性值[关闭]

如何使用spring security和java在jwt json中传递角色或权限