【问题标题】:Making sure a user is authenticated in Angular确保用户在 Angular 中经过身份验证
【发布时间】:2014-11-24 21:36:51
【问题描述】:

我正在制作一个 Angular 应用程序,它使用名为 ng-auth 的指令根据用户的登录状态隐藏/显示元素。例如:

<div ng-auth="! isAuthenticated()">
    <a href="/login">Log-in</a> //Shows if user is not logged in
</div>

<div ng-auth="isAuthenticated()">
    <p>Welcome {{ user }}</p> //Shows if user is logged in
</div>

我必须假设用户可以完全控制客户端,并且可以访问我通常会显示的所有“受保护”元素。我知道这涉及到关注点的分离,涉及到使用服务器验证所有敏感请求。现在,我有几个问题:

  1. 如何在视图中显示敏感信息?如果我想显示 {{ user.sensitiveInformation }} 而不是 Welcome {{ user }},我将如何处理?
  2. 我如何实际上通过服务器验证用户?据我了解,我应该将包含会话 ID 的 cookie 发送到服务器进行验证。但是,是什么阻止了用户发送其他人的 cookie?或者欺骗来自服务器的响应以欺骗客户端显示一些信息。

【问题讨论】:

  • 看看这个digitalturnip.com/…
  • 我相信这个解决方案是不安全的。登录状态不安全地存储为客户端 cookie。

标签: javascript angularjs session authentication cookies


【解决方案1】:

对于这种情况,可以使用restful认证系统。对于每个请求,您将 access_token 发送到服务器以了解用户是否已登录。例如;

  1. 您的客户在您的登录表单中输入了用户名和密码,并且 按 Enter。
  2. 用户名和密码发送到服务器并在数据库中验证。
  3. 成功验证后,您可以使用以下命令生成访问令牌 用户名和密码并返回给客户端。
  4. 在客户端,您将其存储在本地存储中。

现在,您将为每个请求发送访问令牌,以验证此请求是否属于已登录用户。

详细示例请参考here

谷歌搜索:here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    相关资源
    最近更新 更多