2014-07-16 87 views
0

我需要使用JSON对象作为ServiceStack V.4.0.22中的认证。目的是在HTTP POST的身体:如何在身份验证时获取请求主体?

{ "username":"santaclaus","password":"verysecret","customfield":"stuff" } 

从我已经从其他类似的问题,阅读解决方案应该是建立延伸CredentialsAuthProvider自定义的认证供应商,但不知何故IServiceBaseauthService不包含原始请求输入。

如何访问原始请求?

回答

1

您可以访问原始请求有:

authService.Request 

的请求DTO有:

authService.Request.Dto 

或底层ASP.NET的HttpRequest有:

var aspReq = (HttpRequestBase)authService.Request.OriginalRequest; 
+0

嗯,我曾尝试遍历authService.Request的每个字段,但是RawBody,FormData和inputStream字段都是空的。 Dto中充满了用户名和密码,但当然不能与自定义字段映射,内容长度正确,标题正确。它的运行方式为 – user1005003

+0

'FormData'也仅适用于POST形式的urlencoded变量(例如HTML Form Post而非JSON)。如果您想重新读取Request InputStream,您需要[缓冲请求流](https://github.com/ServiceStack/ServiceStack/blob/master/release-notes.md#buffered-stream-option- has-now-加入到反应)。 – mythz

+0

这样做,谢谢。我将从现在开始更彻底地查看更新。 – user1005003