【问题标题】:spring-boot spring security angularjsspring-boot 弹簧安全 angularjs
【发布时间】:2018-04-28 11:34:42
【问题描述】:

我是春天世界的新手。我需要创建一个带有一些 CRUD 操作的 spring boot - angularjs 应用程序。

客户端需要 LDAP 和本地 JDBC 身份验证机制。

他们需要一种对两组用户都通用的授权机制。

应根据用户的角色限制用户访问某些页面。并且需要对每个用户应用单独的权限(创建、更新、删除)集

角色应该由管理员用户创建。

那么我该如何实现由管理员决定谁(哪个角色)可以访问哪个页面的页面授权?

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/", "/home").permitAll().antMatchers("/admin").hasRole("ADMIN")
                .anyRequest().authenticated().and().formLogin().loginPage("/login").permitAll().and().logout()
                .permitAll();
        http.exceptionHandling().accessDeniedPage("/403");
    }

我应该在配置中指定每个角色页面组合吗? 有没有办法动态更改页面和角色,因为角色可能会在以后添加。

【问题讨论】:

    标签: java angularjs authentication spring-boot spring-security


    【解决方案1】:

    可以使用spring mvc和Secured注解

    @Controller
    public class MainController extends BaseController  {
    
        @Secured("ROLE_ADMIN")
        @RequestMapping("/")
        String home(Model model) {
            return "home";
        }
    

    }

    主页将是 /resources/templates/home.ftl 或您喜欢的 jsp。如果用户不是管理员,那么它将重定向到错误页面。

    如果您愿意,您可以手动检查权限并将重定向发送到另一个页面。

    P.S : 你需要添加 @EnableGlobalMethodSecurity(securedEnabled = true) 到 Spring boot 配置类,以便 Secured 注释工作。

    @EnableAutoConfiguration
    @ComponentScan
    @Configuration
    @EnableGlobalMethodSecurity(securedEnabled = true)
    public class Application {
    
       public static void main(String[] args) throws Exception {
           SpringApplication.run(Application.class, args);
       }
    

    }

    【讨论】:

    • 如果在一段时间后创建了一个新角色(可能是本地管理员)怎么办..?而且我认为注解参数不能动态改变。
    • 您可以将页面角色记录存储在数据库中,并手动检查控制器方法用户权限,如果不符合条件则重定向
    • 我改变了主意,现在决定从前端控制对页面的访问和读/写权限,并且只从 spring 端进行基本身份验证。这是一个内部生产应用程序。如何将权限数据集带到 angularjs 端...?我应该使用过滤器吗?在我的情况下使用弹簧安全是一个好主意..?有没有其他方法可以完成这项工作..?
    猜你喜欢
    • 2020-08-09
    • 2023-01-03
    • 2018-09-08
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多