MVC Web サイトで基本認証をセットアップActionFilterAttribute
して、開発中にロックダウンしました。これは、テストしているすべてのブラウザー (IE9+、Chrome、FF、iOS Safari) で 100% 動作しますが、Android で Chrome をロードすると4.0 では、単に 401 アクセスが拒否されたと表示され、基本認証資格情報を要求されることはありませんか?
これはOnAuthorization
メソッドの私のコードです:
public void OnAuthorization(AuthorizationContext filterContext)
{
var controllerName = (filterContext.RouteData.Values["controller"] as string).ToLower();
if (_controllersToIgnore.Contains(controllerName))
{
return;
}
bool credentialsMatch = false;
var req = filterContext.HttpContext.Request;
if (!string.IsNullOrEmpty(req.Headers["Authorization"]))
{
var cred = System.Text.Encoding.ASCII.GetString(Convert.FromBase64String(req.Headers["Authorization"].Substring(6))).Split(':');
var user = new { Name = cred[0], Pass = cred[1] };
if (user.Name == Username && user.Pass == Password)
{
credentialsMatch = true;
}
}
if (!credentialsMatch)
{
var res = filterContext.HttpContext.Response;
res.StatusCode = 401;
res.AddHeader("WWW-Authenticate", "Basic realm=\"\"");
res.End();
filterContext.Result = new EmptyResult();
}
}