0

我正在尝试开发一个网站,我可以在其中拥有许多不同的用户角色。(不限于只有 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页面。

有人可以就这个问题给我建议吗?

这个问题没有正确限制用户进入页面的原因是什么......

如果我缺乏信息来询问,请告诉我,以便我可以更新更多细节。

非常感谢您的指导和提前建议。

祝你有美好的一天。

4

0 回答 0