AngularJS 和 Grails 中基于角色的用户身份验证

Posted

技术标签:

【中文标题】AngularJS 和 Grails 中基于角色的用户身份验证【英文标题】:Role based User authentication in AngularJS and Grails 【发布时间】:2016-05-17 01:20:37 【问题描述】:

我正在开发一个应用程序,它在 Grails 中有后端,在 Angular Js 中有前端。

任何人都可以建议最佳架构师/设计来实施基于角色的用户身份验证。例如,学生用户应该能够看到某些页面上的特定页面和内容区域,教师应该能够看到其他一些内容,但管理员应该能够看到所有页面和内容。

如图所示,在一个页面中,一个模块仅供教师使用,另一个模块仅供管理员使用,一个模块适用于所有人。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用带有 Spring Security Rest 的 Spring Security Core 通过 Angular JS 的 Ajax 调用进行身份验证。

【讨论】:

我们在几个项目的生产环境中使用了这种方法:它很有效。 对我来说,这是最好的选择 :) 你有它的编码例子吗?【参考方案2】:

简而言之,您可以像这样使用$routeProviderresolve 属性:

module.config(["$routeProvider", "AuthorizationsService",
  function($routeProvider, AuthorizationsService) 
    $routeProvider
    .when("/home", 
      templateUrl: '/home.html',
      controller: 'homeController',
      resolve: 
        access: // call a authorization service
      
    )
    .when("/student", 
      templateUrl: '/admin.html',
      controller: 'adminController',
      resolve: 
        access: // call a authorization service
      
    )
    .otherwise(
      redirectTo: "/home"
    );

你需要创建一个工厂来解决或拒绝用户(这将完成所有繁重的工作)

module.factory("AuthorizationsService", ["$q",
  function($q) 

   var checkPermission = function 
     // check and set the permissions from http service
     // return a promise
   ;

   return 
     checkPermission: checkPermission
   
]);

这个article 有更广泛的解释。 您可能还会发现这个SO article 很有用

【讨论】:

以上是关于AngularJS 和 Grails 中基于角色的用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

基于 SAML 响应在 Grails 中分配 Spring 安全角色

如何在 AngularJS 和 FireBase 中进行简单的基于角色的授权?

如何在 AngularJS 中处理基于角色的授权?

Grails、Spring Security 和 Angular JS - 如何保护 URL?

angularJS基于角色的多个Master页面

如何设置 Grails 和 AngularJS 部分模板