使用ServiceStack

时间:2017-06-22 18:57:37

标签: authentication servicestack identityserver4

我正在尝试使用ServiceStack与IdentityServer4进行用户登录身份验证。但是,我需要在从登录重定向后将一些参数传回URL。

e.g。 当调用以下需要用户身份验证的API时。我希望在登录后传递var = 123(在state参数中或以任何其他方式)。

http://myserver/myapi/mydto/abc?var=123

我找到以下链接,指出redirect_uri必须完全匹配,不带任何参数。要在登录后将参数传回redirect_uri,它应该使用状态参数

https://github.com/IdentityServer/IdentityServer3/issues/1371

google oauth2 redirect_uri with several parameters

我正在使用ServiceStack Authenticate属性,我不确定在ServiceStack Authenticate管道中我应该在哪里填充该状态参数。

调用此API时,

http://myserver/myapi/mydto/abc?var=123

ServiceStack.AuthenticateAttribute.DoHtmlRedirectIfConfigured 将重定向到此urL:

http://myserver/myapi/auth/IdentityServer?redirect=http%3a%2f%2fmyserver%2fmyapi%2fmydto%2fabc%3fvar%3d123

此URL仅包含重定向参数,未设置状态参数。因此,当生成Authenticate DTO时,其State字段为空。

我看到ServiceStackHost有 OnPreExecuteServiceFilter

public virtual object OnPreExecuteServiceFilter(IService service, object request, 
IRequest httpReq, IResponse httpRes);

我应该实现OnPreExecuteServiceFilter并使用httpReq中的参数填充请求DTO中的州字段吗?

欢迎任何其他建议。

提前致谢,

0 个答案:

没有答案