要在Spring Security中配置基于角色的访问控制,您可以使用antMatchers()
方法和hasRole()
方法来定义URL模式和角色的对应关系。
以下是一个简单的示例配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.and()
.exceptionHandling()
.accessDeniedPage("/403");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("{noop}admin").roles("ADMIN")
.and()
.withUser("user").password("{noop}user").roles("USER");
}
}
在这个配置中,我们定义了两个角色:“ADMIN”和“USER”,并为它们分别指定了访问的URL模式。管理员可以访问/admin/**
路径,而普通用户可以访问/user/**
路径。任何其他URL都需要进行身份验证。
请注意,在configure(AuthenticationManagerBuilder auth)
方法中,我们使用了inMemoryAuthentication()
方法来定义了两个用户,分别属于两种不同的角色。
这只是一个简单的示例配置,您可以根据自己的需求来定义更多的角色和对应的访问控制规则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。