通过URL阻止用户访问

时间:2018-05-08 09:19:46

标签: java spring spring-security

我的应用中有一个设置页面。

这应该只由管理员配置,所以我阻止了普通会员的页面。

  <security:authorize access="hasAuthority('Administrator')">
    <li id="settings">
        <a href="/settings">
            <img src="../resources/img/icons/10.png" alt="" class="menuIcon">
            <span class="menu-title">Settings</span>
        </a>
    </li>
    </security:authorize>

效果很好。用户看不到该页面。问题是,如果他访问/settings,他可以毫无问题地看到该页面。

我想向他展示一个禁止的页面。知道怎么做吗? THX

1 个答案:

答案 0 :(得分:0)

Spring安全性允许你扩展org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter,你可以很好地使用弹簧启动,如下所示:

e.g。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(final HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .mvcMatchers("/settings").hasAuthority("Administrator");
    }
}

假设您的Principal正在进行身份验证并被置于spring安全上下文中,这应该会触发拒绝访问的处理程序。

您可以按如下方式进行配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(final HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .mvcMatchers("/settings").hasAuthority("Administrator").and()
                .exceptionHandling()
                .accessDeniedPage(...)
                .accessDeniedHandler(...)

    }
}

您可以配置访问被拒绝的页面或自定义处理程序。