認可フィルターを作成しました
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 }
});
}
}
と私の着陸管制官
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
}
問題は、LegalDisclaimer Cookie が設定されず、常に null を返すことです。これは、mvc で Authorize フィルターを学習する最初の試みであり、その 3 日間は何の進歩もありません。誰でもこれをデバッグするのを手伝ってくれますか?