ServiceStack 的AuthTests显示了使用 ServiceStack 服务客户端时的不同身份验证方式。默认情况下,BasicAuth 和 DigestAuth 内置在客户端中,例如:
var client = new JsonServiceClient(baseUri) {
UserName = UserName,
Password = Password,
};
var request = new Secured { Name = "test" };
var response = client.Send<SecureResponse>(request);
在幕后,ServiceStack 将尝试正常发送请求,但当请求被服务器拒绝和质询时,客户端将自动重试相同的请求,但这次使用 Basic/Digest Auth 标头。
当您知道您正在访问安全服务时,要跳过额外的跃点,您可以告诉客户端始终发送 BasicAuth 标头:
client.AlwaysSendBasicAuthHeader = true;
验证的另一种方法是显式调用Auth
服务(这需要启用 CredentialsAuthProvider),例如:
var authResponse = client.Send<AuthResponse>(new Auth {
provider = CredentialsAuthProvider.Name,
UserName = "user",
Password = "p@55word",
RememberMe = true, //important tell client to retain permanent cookies
});
var request = new Secured { Name = "test" };
var response = client.Send<SecureResponse>(request);
成功调用Auth
服务后,客户端已通过身份验证,如果设置了RememberMe,客户端将保留服务器在后续请求中添加的会话 Cookie,这使得来自该客户端的未来请求能够通过身份验证。