我需要允許匿名訪問端點,但仍檢查用戶是否已通過身份驗證,然後再提供一些額外數據。ServiceStack Jwt身份驗證檢查是否已通過驗證
使用[授權]屬性我可以用
var session = SessionAs<AuthUserSession>();
然後session.IsAuthenticated
它工作得很好,但沒有[認證]屬性會是空的(新的會話與新的ID生成所有道具都沒有填充用戶數據)
如何檢查用戶是否沒有[認證] attibute與請求使用jwt令牌認證?
我需要允許匿名訪問端點,但仍檢查用戶是否已通過身份驗證,然後再提供一些額外數據。ServiceStack Jwt身份驗證檢查是否已通過驗證
使用[授權]屬性我可以用
var session = SessionAs<AuthUserSession>();
然後session.IsAuthenticated
它工作得很好,但沒有[認證]屬性會是空的(新的會話與新的ID生成所有道具都沒有填充用戶數據)
如何檢查用戶是否沒有[認證] attibute與請求使用jwt令牌認證?
的JwtAuthProvider是IAuthWithRequest
提供器,其僅驗證JWT令牌,並且如果令牌無效返回適當的HTTP錯誤響應當需要認證所述請求,例如服務註釋時使用[Authenticate]
屬性。如果服務不需要身份驗證,則IAuthWithRequest
身份驗證提供程序和JWT承載令牌未經驗證,用戶會話不會自動填充。
但在最新v4.5.9 that's now on MyGet新的API已被添加到JWT AuthProvider能夠創建定製的JWT令牌,並將其轉換成用戶會話,具體可以從JWT令牌創建UserSession:
var session = JwtAuthProvider.CreateSessionFromJwt(base.Request);
這是just a helper解決註冊JwtAuthProviderReader
並調用其API ConvertJwtToSession()
:
var jwtProvider = (JwtAuthProviderReader)
AuthenticateService.GetAuthProvider(JwtAuthProviderReader.Name);
var session = jwtProvider.ConvertJwtToSession(base.Request, base.Request.GetJwtToken());
我使用asp.net的核心,並使用你提供的是代碼thows例外JwtAuthProvider線453.任何想法? – Roman
base.Request.GetJwtToken();一片空白。我正在使用打字稿客戶端,所有罰款正如我提到的屬性。 – Roman
@Roman您可以使用正在發送令牌的TypeScript客戶端請求來更新您的問題 – mythz