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的反向引用,以便用户能够在身份验证后访问他所在的页面