我正在尝试开发一个网站,我可以在其中拥有许多不同的用户角色。(不限于只有 1-5 个静态角色,但也可以自定义)
我已将我的 SecurityConfig.java 设置为 ff:
@Override
protected void configure(HttpSecurity http) throws Exception {
this.setInitialUrlRoles(http);
this.setInitAuthenticationUrls(http);
http
.addFilterBefore(modifiedAuthFilter, FilterSecurityInterceptor.class)
.authorizeRequests(
request -> request.anyRequest().permitAll()
)
.formLogin(login -> login
.loginPage("/sign-in")
.loginProcessingUrl("/sign-in")
.permitAll()
.defaultSuccessUrl("/", false)
.failureUrl("/sign-in-error"))
.logout(logout -> logout
.logoutUrl("/sign-out")
.logoutSuccessUrl("/sign-in"))
.exceptionHandling(exception -> exception
.accessDeniedPage("/403-forbidden"))
.sessionManagement()
.maximumSessions(1)
.sessionRegistry(sessionRegistry());
}
private void setInitAuthenticationUrls(HttpSecurity http) {
InitializeUrl initializeUrl = new InitializeUrl();
for (String url : initializeUrl.getAuthenticatedOnlyUrls()) {
try {
http.authorizeRequests()
.antMatchers(url).authenticated();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void setInitialUrlRoles(HttpSecurity http) throws JSONException, Exception {
for (SecuredRole role : accountMapper.readAllRoles()) {
System.out.println(role.toString());
try {
http.authorizeRequests()
.antMatchers(role.getAccessible_url())
.hasAnyAuthority(role.getRole_name());
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void setInitialUrlRoles(HttpSecurity http) throws JSONException, Exception {
for (SecuredRole role : accountMapper.readAllRoles()) {
System.out.println(role.toString());
try {
http.authorizeRequests()
.antMatchers(role.getAccessible_url())
.hasAnyAuthority(role.getRole_name());
} catch (Exception e) {
e.printStackTrace();
}
}
this.setInitialUrlRoles(http); -> 对于每个角色和 url 映射 this.setInitAuthenticationUrls(http); -> 对于所有要进行 .authenticated() 的 url(仅适用于登录用户)
当我登录到用户并转到特定页面时,如果该页面对用户被阻止。页面限制角色 -> TEST 用户角色 -> testtest
但它允许用户进入页面而不是页面定向到403页面。
有人可以就这个问题给我建议吗?
这个问题没有正确限制用户进入页面的原因是什么......
如果我缺乏信息来询问,请告诉我,以便我可以更新更多细节。
非常感谢您的指导和提前建议。
祝你有美好的一天。