>服务器(REST API服务器)
>节点js
>快递
> jsonwebtokens
> express-jwt
>猫鼬
>客户端(便携式前端)
>引导
>角度JS
>本地存储
角色facebook
> angle-jwt
后来,客户端应用程序将被移植到android,iphone和其他平台使用phonegap.对于OAuth,我正在使用Facebook作为提供者.现在,我刚才发现JSON Web Token是这种设置的方式.我的问题是架构性的,而不是语法的 – 如何在nodejs中使用JWT签署Facebook访问令牌和用户ID时如何管理密钥?
所以这是流程如何在我的应用程序中工作:
角度客户端有一个登录按钮
>用户点击按钮> Facebook Auth开始
>客户端接收user_id和FB访问令牌
>客户端将[POST json body]将user_id和访问令牌发送到Node Express Server为’http://server.com/auth/login‘
> Node Server已将express-jwt应用于除auth / login之外的所有路由
var expressJwt = require(‘express-jwt’);
var jwt = require(‘jsonwebtoken’);
app.use(expressjwt({secret:”})),({path:[‘/ auth / login’]}));
>节点服务器从req.body接收数据,使用JavascriptSDK从Facebook获取所有配置文件的详细信息,并使用它进行签名
var token = expressjwt.sign({profile},);
> Node Server存储(更新,如果user_id存在)db中的新令牌,并将其作为响应发送给客户端
>客户端将本地接收的新令牌作为json数据存储在本地存储中
>客户端使用angular-jwt从新令牌获取配置文件数据,并将其发送到服务器的所有请求自动附加到授权头中的新令牌
现在我的问题是:
>我真的需要在数据库中存储JWT令牌吗?我肯定不会将请求标头中的令牌与数据库进行比较
>我需要为安全性生成随机秘密密钥,每次登录?如果是,那么如何适应客户端和服务器?
>何时何地需要检查令牌过期?和如何刷新它?
我对设计流程和机制感到失落.