我的应用中有一个设置页面。
这应该只由管理员配置,所以我阻止了普通会员的页面。
<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
答案 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(...)
}
}
您可以配置访问被拒绝的页面或自定义处理程序。