此问题与此问题有关:" Revoking Bearer Token and Refresh Token - ServiceStack"
当用户使用他们的用户名和密码成功登录时,我希望将用户的RefreshToken存储在数据库中。我的想法是,我可以使用RefreshToken作为用户会话的唯一标识符,如果用户已撤销其令牌,并且可以根据GetAccessToken请求中传递的RefreshToken短路GetAccessToken请求并检查RefreshToken我坚持了。
我想在我的overAuthenticated实现中坚持我的auth API中的RefreshToken:
IHttpResult OnAuthenticated(IServiceBase authService,
IAuthSession session, IAuthTokens tokens,
Dictionary<string, string> authInfo)
这似乎是合适的地方。在初始凭证auth请求中,IAuthTokens tokens
为null,authService.Request.GetBearerToken返回null。
有没有什么可以访问客户端将接收并保持它的RefreshToken?
答案 0 :(得分:2)
Session Cookies是会话的唯一标识符,是key used to save the session against。
但JWT的观点是没有服务器会话状态,因为它封装在JWT承载令牌中。所以我不理解这种维护服务器状态的方法,使使用JWT的主要好处无效。
服务器可以通过注册Global Response Filter并检查AuthenticateResponse
DTO或注册Typed Response Filter来访问返回的RefreshToken,该调用已注册DTO的Typed过滤器,例如:
public override void Configure(Container container)
{
RegisterTypedResponseFilter<AuthenticateResponse>((req, res, dto) =>
{
var jwt = dto.BearerToken;
var refreshToken = dto.RefreshToken;
});
}