【问题标题】:what is the best way for angular.js to know whether passport.js session is set or not?angular.js 知道是否设置了 passport.js 会话的最佳方法是什么?
【发布时间】:2016-01-07 05:16:47
【问题描述】:
以下是我遇到的与设置了 passport.js 的 Angular 客户端与后端对话相关的问题。
如果我让 Angular 处理我的所有路由,前端如何知道用户会话在浏览网站时是否仍然处于活动状态?最简单的方法和最佳实践方法?
如果我们确实想通过 passport.js 验证用户会话是否仍然处于活动状态,那么每次执行 http 请求来检查 req.isAuthenticated() 是否真的是真的效率会很低吗?
角度如何处理页面刷新,并且还知道后端护照仍在跟踪会话?
【问题讨论】:
标签:
javascript
angularjs
node.js
session
passport.js
【解决方案1】:
我会尝试根据自己的经验回答您的问题。
如果我让 Angular 处理我的所有路由,前端如何知道用户会话在浏览网站时是否仍然处于活动状态?最简单的方法和最佳实践方法?
客户端只知道tokens。无状态服务器必须在每个需要它的请求中对其进行验证。因此,处理会话状态的最佳方式是通过服务器。它只知道基于令牌的会话状态。请不要将状态验证令牌与有状态服务器混淆
如果我们确实想通过 passport.js 验证用户会话是否仍然处于活动状态,那么每次执行 http 请求来检查 req.isAuthenticated() 是否真的是真的效率会很低吗?
这取决于您需要多少个端点来通过其令牌对用户进行身份验证。公共 API,例如 Facebook API 或 Twitter API,会在每个请求中验证令牌。
角度如何处理页面刷新,并且还知道后端护照仍在跟踪会话?
实现身份验证服务最灵活的方式是使用example、interceptors。
希望对你有帮助。