angularjs – 基于OpenID的Angular.js认证(带Flask后端)
一个如何实现
在Angular.js(使用Flask后端Web应用程序)中的基于OpenID的身份验证? 看来Angular.js代码需要并入逻辑 但是,Flask侧也应该有一个OpenID验证机制.
不幸的是我没有一个示例应用程序来分享,但是这里是一个很高级别的描述,我希望是有用的.
让我们忘记一下你有一个AngularJS应用程序,并查看OpenID认证交换的工作原理: >用户输入登录表单中的OpenID URL并提交给服务器 所以我们来看看当你添加AngularJS时会发生什么.请注意,有很多方法可以做到这一点,下面我描述的是一种可能性. 如果Angular应用程序向需要身份验证的服务器发出请求,则服务器应返回错误代码401.例如,当Angular应用程序获取401时,可以弹出登录表单. 但是,由于需要浏览器重定向,因此OpenID认证舞蹈无法在丰富的JS应用程序的上下文中完成.您的服务器端应用程序将至少支持三条路由: >为Angular应用程序提供的根URL 因此,用户连接到您的根URL,并获取AngularJS应用程序,该应用程序以非验证状态启动.在某些时候,Angular应用程序将提示用户登录,使用具有OpenID文本字段的表单提交一个提交按钮.这些表单字段应该是发布到服务器的常规HTML表单的一部分,而不是附加到控制器的客户端角度元素.表单的“action”属性应指向服务器的OpenID登录路由. 当用户单击登录按钮时,服务器唤醒并接收启动OpenID认证的请求.此时上述步骤1-5运行没有变化. 在步骤5的最后,服务器将用户定位在应用程序的数据库中.服务器现在可以做的是通过重定向回到根URL,以便重新启动Angular应用程序.如果应用程序需要在不是初始状态的状态下重新启动,则在启动OpenID身份验证过程之前,可以将客户端存储(例如,Cookie)保存到恢复状态. 但是这还不够,服务器还需要传递一些关于登录用户的信息.一种方法是将用户的唯一ID或令牌附加到重定向URL的查询字符串中,Angular应用程序可以访问.这将是上述步骤6中进入Cookie的同一张ID. 现在Angular应用程序重新启动,如果需要,可以恢复其状态,并具有识别登录用户的ID或令牌.当应用程序需要向服务器发出Ajax请求时,会将该ID或令牌与请求一起发送.服务器可以验证它并返回401,如果发现它是无效的或者如果它有一个到期日期,并发现已过期. 如果与请求一起发送的标识被验证,则可以执行请求,并且可以将响应发送回Angular应用. 可以在客户端通过删除用户ID /令牌来实现注销功能,以便将来再次发送对服务器的请求而不进行验证. 非常重要:Angular应用程序和包含用户信息的Flask服务器之间的所有交换都必须通过安全的HTTP来完成.如果不是您的ID或令牌将以纯文本行进. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – $sce.trustAsHtml与ng-bind-html
- 如何在scala的解释器中将外部库添加到类路径?
- bootstrap-datatimpicker 调教
- scala – 如何在Play 2.4上安装ReactiveMongo?
- 基于CORBA规范的中间件——CORBA基本原理
- Redis WRONGTYPE Operation against a key holdi
- angular – 与Scheduler.async的RxJS依赖问题
- angularjs – Angular.js和Angular.dart之间的区
- 在Jenkins从属节点上运行的Jenkinsfile中执行doc
- Angularjs – 多个$http REST调用(第二个调用依赖