私はasp.net MVCフォームでAnitforgeryTokenを実装し、ログインプロシージャにその属性を追加しましたが、チェックが失敗したときに私の詐欺行為にリダイレクトしたいのです。例外ページ。これは属性????の内で可能ですか?asp.net MVC antiforgerytoken例外on RedirectToAction
おかげ
私はasp.net MVCフォームでAnitforgeryTokenを実装し、ログインプロシージャにその属性を追加しましたが、チェックが失敗したときに私の詐欺行為にリダイレクトしたいのです。例外ページ。これは属性????の内で可能ですか?asp.net MVC antiforgerytoken例外on RedirectToAction
おかげ
ValidateAntiForgeryTokenAttributeだけHttpAntiForgeryExceptionをスローします。あなたは、このシナリオを処理するためにHandleErrorAttributeを使用することができます。
[HandleError(
ExceptionType = typeof(HttpAntiForgeryException),
View = "Unauthorized")]
[ValidateAntiForgeryToken]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SomeActionThatRequiresToken()
{
return View();
}
あなたがあなたのグローバルフィルタにカスタムフィルタを追加することができ、[ValidateAntiForgeryToken]
を持っているすべてのアクションに[HandleError]
属性を入れたくない場合:
Global.asaxのでApplication_Start()
下:
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
、その後:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AntiForgeryTokenFilter());
}
}
AntiForgeryTokenFilter.cs:
public class AntiForgeryTokenFilter : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if(filterContext.Exception.GetType() == typeof(HttpAntiForgeryException))
{
filterContext.Result = new RedirectResult("/"); // whatever the url that you want to redirect to
filterContext.ExceptionHandled = true;
}
}
}
コメントなぜあなたは投票しません。 – Dmitry
ありがとうは私が探していたもののthats。 – davethecoder