Tôi có dịch vụ ASP MVC3 an toàn sử dụng xác thực cơ bản. Sau khi tìm kiếm tràn ngăn xếp, tôi đã tạo mã sau đây.asp mvc 3 ActionFilter để xác thực cơ bản
public class BasicAuthentication : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var req = filterContext.HttpContext.Request;
if (String.IsNullOrEmpty(req.Headers["Authorization"]))
{
filterContext.Result = new HttpNotFoundResult();
}
else
{
var credentials = System.Text.ASCIIEncoding.ASCII
.GetString(Convert.FromBase64String(req.Headers["Authorization"].Substring(6)))
.Split(':');
var user = new { Name = credentials[0], Password = credentials[1] };
if(!(user.Name == "username" && user.Password == "passwords"))
{
filterContext.Result = new HttpNotFoundResult();
}
}
}
}
1) ActionFilter có phải là cách tốt nhất để làm điều này không?
2) Thiết lập bộ lọcContext.Result cách chính xác để từ chối truy cập vào phương pháp điều khiển?
3) Có điều gì tôi đang làm sai không?
Cảm ơn.
-Nick
bạn đang sử dụng cơ bản cho các hình thức/tùy chỉnh loại auth với cơ bản (hai giai đoạn auth) hoặc vẫn còn sử dụng các tài khoản tên miền? –