我有
/ welcome / employees - 员工名单
/ welcome / employees / edit / - 编辑员工
/ welcome / employees / find / - 查找员工
我想定义ADMIN
来访问所有内容,但USER
只是为了查看列表并查找。
我应该如何配置。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/welcome", "/welcome/employees", "/welcome/employee/find").access("hasRole('ROLE_USER')")
.antMatchers("/welcome/**").access("hasRole('ROLE_ADMIN')")
.and()
.formLogin().loginPage("/login")
.defaultSuccessUrl("/welcome")
.failureUrl("/login?error")
.usernameParameter("username").passwordParameter("password")
.and()
.logout().logoutSuccessUrl("/login?logout");
}
答案 0 :(得分:2)
如果您没有指定ROLE来访问每个经过身份验证的用户都可以访问该网址。你可以这样试试。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/welcome/employees/edit/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().fullyAuthenticated()
// part of your config
}
如果USER
尝试访问/welcome/employees/edit/
,则会收到403错误。但ADMIN
可以使用此配置访问每个网址。因为如果您没有指定访问角色,则每个人都可以访问该网址。但除了edit
页面外,每位用户如果登录都可以访问every url
。请不要忘记这一点。