我需要允许匿名访问端点,但仍检查用户是否已通过身份验证,然后再提供一些额外数据。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