Я создал Авторизоваться фильтрCookie не установлен в MVC 4
public class LandedAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext) {
if (httpContext == null)
throw new ArgumentNullException("httpContext");
if (HttpContext.Current.Response.Cookies["LegalDisclaimer"].Value != "Accepted")
{
return false;
}
return true;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext){
string url = filterContext.HttpContext.Request.Url.ToString();
System.Diagnostics.Debug.WriteLine(url);
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "action", "Index" },
{ "controller", "Landing" },
{ "returnUrl", url }
});
}
}
и мой Landing контроллер
public ActionResult Index(string returnUrl)
{
ViewBag.rdParm = returnUrl;
return View();
}
public ActionResult Accept(string returnUrl)
{
HttpCookie cookie = new HttpCookie("LegalDisclaimer", "Accepted");
Response.Cookies.Add(cookie);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
Затем я настроить контроллер как
[Landed]
public class someController : Controller
{
contoller actions here
}
Проблема заключается в том, что coo LegalDisclaimer coo kie никогда не устанавливается и всегда возвращает null. Это моя первая попытка изучить фильтр Authorize в mvc и его 3 дня без какого-либо прогресса. Может ли кто-нибудь помочь мне отладить это, пожалуйста?
Его получение атрибута accept. Но я попробовал ваш ответ, и он все равно продолжает получать меня на странице «Отказ от ответственности». –
«Признать атрибут» ???? У вас есть действие LandedAttribute или действие Accept Accept. Я не уверен, что вы имеете в виду. –
Я имел в виду действие не атрибут –