Javascript 样板JS:处理授权和身份验证的推荐方法

Javascript 样板JS:处理授权和身份验证的推荐方法,javascript,boilerplatejs,Javascript,Boilerplatejs,使用安装程序时,建议使用什么方法来处理授权和身份验证 显然,在服务器端,您会检查cookies等,以了解谁已登录。但是,在客户机上,您如何知道用户是否登录以及他们的用户名等是什么?我将分享在使用BoilerplateJS的一个项目中是如何做到这一点的。在这个项目中,我们使用OAuth2.0进行身份验证 我们有一个单独的登录页面,没有使用样板JS或复杂JS。将其分开的原因是,身份验证可能依赖于URL重定向,而JS并不能最好地处理URL重定向 一旦用户得到正确的身份验证,我们就会收到服务器会话的a

使用安装程序时,建议使用什么方法来处理授权和身份验证


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

我将分享在使用BoilerplateJS的一个项目中是如何做到这一点的。在这个项目中,我们使用OAuth2.0进行身份验证

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

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

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

  • 我们希望BoilerplateJS组件是完全自包含的,包括它的身份验证。因此,如果某个特定组件的viewmodel从服务器接收到未经授权的401 HTTP响应(未登录或会话过期),我们会在那里以不同的方式呈现该组件,而不会将用户重定向到登录页面

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

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

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


如果您在服务器端使用cookie,为什么不在客户端使用它们呢?如果我正确理解ASP.NET表单身份验证,cookie是加密的-在客户端使用解密cookie的代码会使应用程序易受攻击。非常感谢。遗憾的是,没有带有样板JS的“真实世界”应用程序示例-管道有点困难。例如,我不知道在401事件发生时如何集中管理控件的呈现版本,这样就不必每次都重新编写错误控件。在看了这一点之后,我认为使用OAuth以及Sammy.JS的OAuth支持创建该控件是有意义的。你觉得呢?我以前没用过SammyJS。。也许你应该问一个关于Stackoverflow的好的OAuth库的单独问题?让我们也不断更新。。到目前为止,我对在OAuth上使用的东西不满意。。。