2017-08-31 75 views
1

對於JWT的sub聲明是可選的,但feathersjs-authentication不會讓我將其設置爲空白字符串或將其刪除。如何在FeathersJS中設置JWT的「子」聲明?

我能夠hook但改變sub或試圖刪除它不工作之前,添加一個新值在authentication有效載荷。

app.service('/api/auth').hooks({ 
    before: { 
    create: [ 
     // You can chain multiple strategies 
     auth.hooks.authenticate(['jwt', 'local']), 

     hook => { 
     // I can add a new `SUB` value but this method doesn't work for `sub` 
     Object.assign(hook.params.payload, {SUB: hook.params.payload.userId}) 
     } 
    ], 
... 

我嘗試添加到after鉤一樣的變化,但也不能工作。將sub的值設爲anonymous對我來說似乎並不合適。他們的文件甚至說:

subject: 'anonymous', // Typically the entity id associated with the JWT

然而,似乎沒有成爲一個直接的方式,使sub JWT要求的動態值。

回答

1

subjectsubauthentication options中設置,並且與任何其他JWT特定選項一樣,無法通過有效負載進行設置。

Looking at the code你可以看到,valid JWT option keys可以通過params設置(這不同於params.query是一個惡意的客戶端範圍之外,因此它不能被輕易篡改):

app.service('/api/auth').hooks({ 
    before: { 
    create: [ 
     // You can chain multiple strategies 
     auth.hooks.authenticate(['jwt', 'local']), 

     hook => { 
     hook.params.sub = hook.params.payload.userId; 
     } 
    ], 
+0

不工作:(仍然來了out'as'anonymous',我在'before'和'after' hook中試過,結果相同。 – SomethingOn

相關問題