2016-09-29 55 views
1

嗨我正在尋找將非用戶字段添加到身份驗證過程中的有效內容,以便我可以包含在JWT令牌中。將非用戶字段添加到有效載荷以用於JWT令牌

的要求是這樣的:

{ "scriptId": "script1", "password": "password", "userName": "user1" } 

配置是這樣的:

"auth": { 
    "local": { 
     "usernameField" : "scriptId" 
    }, 
    "token": { 
     "secret": "mysecret", 
     "payload": ["scriptId","userName"], 
     "expiresIn": "10min" 
    }, 
    "successRedirect": "/chat.html" 
    } 

我怎樣才能傳遞用戶名參數,所以我可以在將已授權的鉤前/令牌檢索服務,所以我可以去hook.data

或者如果有更好的方法來做到這一點,請讓我知道。

回答

1

檢查this PR:

// default.json 
{ 
    "auth": { 
    "extraFields": [ 
     "email", 
     "roles" 
    ] 
    } 
} 

extraFields是你的用戶對象的字段名。因此,JWT中的數據需要由用戶端點提供。

0
  1. 創建後使用命令「羽毛產生鉤」

  2. 內/src/service/authentication/index.js添加里面到底鉤叫add_payload(或任何ü希望)服務身份驗證的出口

app.service('/ auth/local')。after(hooks.after);

  • 創建/ SRC /服務/認證/鉤,內容index.js文件應該是這樣的:
  • 'use strict' const addPayload = require('./add_payload'); const globalHooks = require('../../../hooks'); const hooks = require('feathers-hooks'); exports.after = { all: [addPayload()], find: [], get: [], create: [], update: [], patch: [], remove: [] };

  • 鉤子函數裏面...... /src/service/authentication/hooks/add_payload.js

    return function(hook) { hook.result.aa = "xyz"; // add whatever you want to the return here... hook.addPayload = true; };

  • 1

    你可以按照以下方式添加它

    app.service('authentication').hooks({ 
        before: { 
         create: [ 
         authentication.hooks.authenticate(config.strategies), 
         function (hook) { 
         hook.params.payload = { 
          userId: hook.params.user.userId, 
          accountId: hook.params.user.accountId 
          }; 
          return Promise.resolve(hook); 
         } 
         ], 
         remove: [ 
         authentication.hooks.authenticate('jwt') 
         ] 
        } 
        });