背景:由于我们需要调用stf的接口,但是调用接口必须使用用户生成的token进行权限校验,而生成token在stf里面只能前端生成,而它没有提供接口形式的生成方法,因此我通过改造代码,提供了一个可以通过接口的形式生成token。
修改文件地址:lib/units/auth/ldap.js
// 引用文件
var dbapi = require('../../db/api')
var util = require('util')
var uuid = require('uuid')
// 添加接口
app.get('/auth/api/vi/accessToken/generate', function(req, res) {
var params = url.parse(req.url, true).query
var email = params.um + '@douyole.com'
var name = params.name
log.info('自定义 创建token email=', email)
log.info('自定义 创建token name=', name)
var jwt = jwtutil.encode({
payload: {
email: email
, name: name
}
, secret: options.secret
})
var tokenId = util.format('%s-%s', uuid.v4(), uuid.v4()).replace(/-/g, '')
var title = '系统生成:' + tokenId
log.info('自定义 创建token title=', title)
return dbapi.saveUserAccessToken(email, {
title: title
, id: tokenId
, jwt: jwt
}).then(function() {
res.status(200)
.json({
success: true
, token: tokenId
})
})
})