各位程序員你好,我正在創(chuàng)建一個(gè)帶有身份驗(yàn)證的 API。在OnTokenValidated函數(shù)上,我想讓我的控制器實(shí)例將聲明保存在API Base Controller 中。上下文變量是 aTokenValidatedContext并且有一個(gè)HttpContext屬性,但是這個(gè) HttpContext 沒(méi)有常用的方法(我只會(huì)用它的常用方法獲取 RouteData )。我知道有很多方法可以輕松訪問(wèn)任何控制器的聲明,但由于原因,我需要在 ApiBaseController 中使用它。我的代碼在啟動(dòng)時(shí)是這樣的: options.JwtBearerEvents = new JwtBearerEvents { OnAuthenticationFailed = context => { return jwtMiddleware.AuthenticationFailed(context); } ,OnMessageReceived = context => { return jwtMiddleware.MessageReceived(context); }, OnTokenValidated = context => { //var claims = context.Principal.Claims.ToList(); return jwtMiddleware.TokenValidated(context); }, OnChallenge = context => { return jwtMiddleware.Challenge(context); } };也許我可以在另一個(gè)回調(diào)函數(shù)中保存聲明?我到處尋找類似的情況,但我還沒(méi)有找到任何東西。您對(duì)此有什么建議嗎?幫助。提前致謝。
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
就像@win 在他的評(píng)論中所說(shuō)的那樣,這些聲明在Principal
. 所以你應(yīng)該像正常人一樣使用它。
另一方面,I必須在基本控制器上保存相同的聲明。所以我做了以下事情:
添加了
IHttpContextAccessor
.創(chuàng)建了一個(gè)模型,其中包含我將保存的索賠信息。
我創(chuàng)建了一個(gè)方法,它調(diào)用單例上下文及其聲明并返回帶有信息的模型。
在基本控制器中,如果模型的實(shí)例為空,我將使用前面提到的方法分配它。
我不推薦這最后一個(gè)程序,只是使用Princpal
但可以幫助具有類似目標(biāo)的其他人。
- 1 回答
- 0 關(guān)注
- 357 瀏覽
添加回答
舉報(bào)
0/150
提交
取消