【问题标题】:BoilerplateJS: recommended way to handle authorization and authenticationBoilerplateJS:处理授权和身份验证的推荐方式
【发布时间】:2012-09-22 16:13:15
【问题描述】:

使用BoilerplateJS 设置,处理授权和身份验证的推荐方法是什么?

显然,在服务器端,您会检查 cookie 等以了解谁已登录。但是,在客户端,您如何知道用户是否已登录以及他们的用户名等?

【问题讨论】:

  • 如果你在服务器端使用cookies,为什么不在客户端使用呢?
  • 如果我正确理解 ASP .NET Forms 身份验证,cookie 是加密的 - 在客户端上有解密 cookie 的代码会使应用程序易受攻击。

标签: javascript boilerplatejs


【解决方案1】:

我将在其中一个使用 BoilerplateJS 的项目中分享这是如何完成的。在这个项目中,我们使用 OAuth 2.0 进行身份验证。

  • 我们有一个单独的登录页面,它没有使用 BoilerplateJS 或复杂的 JS。将其分开的原因是身份验证可能依赖于 URL 重定向,而 JS 不能最好地处理。

  • 一旦用户通过正确的身份验证,我们就会收到服务器会话的 auth_token 并将其存储为 JS 变量。我们使用全局 Boiler.Context 的“设置”来存储这个令牌。由于设置被继承到子上下文,我们可以从任何地方访问它。

  • 出于授权目的,我们随后为包含授权访问密钥的登录用户下载了一个简单的 ACL。这些键仅用于客户端验证以显示/隐藏控件。真正的授权是在后端服务上进行的。

  • 我们希望 BoilerplateJS 组件完全独立,包括对其进行身份验证。因此,如果特定组件的视图模型从服务器接收到未经授权的 401 HTTP 响应(未登录或会话到期),我们会在那里以不同方式呈现组件,而不会将用户重定向到登录页面。

  • 由于我们没有重定向,即使 BoilerplateJS 组件没有主动显示其内容,用户也可以使用页面上的其他信息。我们在组件上呈现了一些错误信息,并带有重新登录的链接。

  • 通过我们创建的通用错误处理程序来处理此问题。从 component.js,我们将错误回调函数传递给我们的视图模型(您可能在上下文本身也有这个)。视图模型使用此回调函数来通知其中发生的任何错误。在 401 HTTP 代码的情况下,调用此处理程序要求 component.js 呈现带有错误信息和重新登录链接的 UI。

  • 用户单击重新登录 URL 以返回登录页面。此 URL 包含对原始 URL 的反向引用,以便用户能够访问他在身份验证后所在的页面。

【讨论】:

  • 非常感谢。太糟糕了,没有带有 BoilerplateJS 的“真实世界”应用程序示例 - 管道有些困难。例如,我不知道当 401 发生时如何集中管理控件的渲染版本,这样您就不必每次都重新编写错误控件。
  • 稍微看了一下之后,我认为使用 OAuth 创建它是有意义的,并支持 Sammy.JS 的 OAuth。你怎么看?
  • 我以前没用过 SammyJS。也许你应该问一个单独的问题来了解 Stackoverflow 上的一个好的 OAuth 库?让我们也保持更新。到目前为止,我对我在 OAuth 上使用的内容不满意...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多