我有一个具有学生登录表单的android应用,并且我想根据sql server中存储的数据检查Web api上的学生凭据
我在网上搜索并观看了许多视频,这些视频都在谈论许多场景,但没有任何帮助。
我想要的只是对我的休息服务进行自定义验证(因此,我应该为每个请求发送凭据)
我已经使用基本身份验证来确保安全性,因此我应该提供的base64编码
username:password
在每个请求的标头中,如下所示
授权:基本的'编码的用户名:密码
httpGet.setHeader("Authorization", "Basic "+encodeUsernameAndPassword());
在服务器端,我已经实现了消息处理程序
public class BasicAuthenticationHandler : DelegatingHandler
{
public readonly IAuthenticationService authService;
public BasicAuthenticationHandler(IAuthenticationService service)
{
this.authService = service;
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
AuthenticationHeaderValue authHeader = request.Headers.Authorization;
if (authHeader == null || authHeader.Scheme != "Basic")
{
return Unauthorized(request);
}
string encodedCredentials = authHeader.Parameter;
var credentialsBytes = Convert.FromBase64String(encodedCredentials);
var credentials = Encoding.ASCII.GetString(credentialsBytes).Split(':');
if (!authService.Authenticate(credentials[0], credentials[1]))
{
return Unauthorized(request);
}
string[] roles = null;//todo
IIdentity identity = new GenericIdentity(credentials[0], "Basic");
IPrincipal user = new GenericPrincipal(identity, roles);
HttpContext.Current.User = user;
return base.SendAsync(request, cancellationToken);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句