使用 AngularJS 进行授权

Posted

技术标签:

【中文标题】使用 AngularJS 进行授权【英文标题】:Authorization with AngularJS 【发布时间】:2018-01-23 09:40:06 【问题描述】:

我们有一个带有 AngularJS (1.6) 的单页应用程序和一个运行 JAVA Spring MVC 的服务器端。身份验证后,服务器交付 index.htm 文件和一个包含所有应用程序模块的主 JS 文件。

现在需要使某些模块对某些用户角色可用。实现这一目标的公认方法是什么?

我正在考虑在服务器端创建一个过滤器来捕获对该 JS 文件的请求,并根据用户角色,从 JS 文件中删除用户不应该看到的模块。

这似乎不是一个真正优雅的解决方案,我想知道是否有更好的方法来实现这一点。

谢谢!!

【问题讨论】:

【参考方案1】:

您可以看到以下示例Login example。它使用 rest http 身份验证,并在标头中使用用户名和密码来生成加密的标头。后端代码见Rest Api。见认证服务

  if (LocalStorage.Get('auth') !== null) 
    $http.defaults.headers.common.Authorization = LocalStorage.Get('auth');
    return true;
  
  else 
    return false;
  

【讨论】:

【参考方案2】:

您可以使用基于客户端的身份验证库,例如 satellizer,并从您的路由器实现授权

【讨论】:

以上是关于使用 AngularJS 进行授权的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs - 未在 Safari 中添加授权标头

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

使用 JWT 处理 401(未授权)angularjs 身份验证

使用 AngularJS 登录后不存在授权标头时,Spring Security 不会抛出错误

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

AngularJS + Jersey RESTful 后端:身份验证和授权