123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- const jwt = require('jsonwebtoken');
- const secret = 'SLDLKKDS323ssdd@#@@gf';
- module.exports = class extends think.Service {
- /**
- * 根据header中的X-Nideshop-Token值获取用户id
- */
- async getUserId() {
- const token = think.token;
- if (!token) {
- return 0;
- }
- const result = await this.parse();
- if (think.isEmpty(result) || result.user_id <= 0) {
- return 0;
- }
- return result.user_id;
- }
- /**
- * 根据值获取用户信息
- */
- async getUserInfo() {
- const userId = await this.getUserId();
- if (userId <= 0) {
- return null;
- }
- const userInfo = await this.model('user').field(['id', 'username', 'nickname', 'gender', 'avatar', 'birthday']).where({ id: userId }).find();
- return think.isEmpty(userInfo) ? null : userInfo;
- }
- async create(userInfo) {
- const token = jwt.sign(userInfo, secret);
- return token;
- }
- async parse() {
- if (think.token) {
- try {
- return jwt.verify(think.token, secret);
- } catch (err) {
- return null;
- }
- }
- return null;
- }
- async verify() {
- const result = await this.parse();
- if (think.isEmpty(result)) {
- return false;
- }
- return true;
- }
- };
|