我正在编写一个将公开 API 的应用程序。该应用程序允许人们创建工作区并向其中添加用户。每个用户都将拥有一个唯一的令牌。当他们进行 API 调用时,他们将使用该令牌(这会将他们识别为使用该工作区的用户。
目前我正在这样做:
var w = new Workspace(); // This is a mongoose model
w.name = req.body.workspace;
w.activeFlag = true;
crypto.randomBytes(16, function(err, buf) {
if(err){
next(new g.errors.BadError503("Could not generate token") );
} else {
var token = buf.toString('hex');
// Access is the list of users who can access it. NOTE that
// the token is all they will pass when they use the API
w.access = { login: req.session.login, token:token, isOwner: true };
w.save( function(err){
if(err){
next(new g.errors.BadError503("Database error saving workspace") );
这是生成 API 令牌的好方法吗?
由于令牌是名称+工作空间,也许我应该做类似 md5(username+workspace+secret_string) ...?