NSS_03フィルタ
3523 ワード
asp.Netmvc 3には4種類のフィルタがあります:ライセンス、操作、結果、異常.操作行の順序は、承認、操作、結果、例外です.
まずTempDataを見てみましょう.データは1回までのControllerでしか転送できません.また、各要素は1回しかアクセスできません.アクセス後、自動的に削除されます.一時的なキャッシュ内容やエラーページを投げ出す際にエラーメッセージを渡すのが一般的であるため,異常情報の伝達にはTempDataが用いられる.
プロジェクトでは、認証クラスのユーザーがログインしているかどうか、および異常クラスのエラーログ記録機能のみを検証します.システムのデフォルト実装を継承できる抽象クラスAuthorizeAttribute,HandleErrorAttributeログインするかどうか:
異常処理
最後に対応するactionで{success:false,errType:**,errMsg:TempData[「errMsg」]as string}のようなものを返し、クライアントで対応する処理をするのは愚かですね.クライアントは繰り返しの仕事をたくさんしなければなりません.愚かですが、今はここしか考えられません.後で熟知してから最適化しましょう. ログインの有無については、リフレッシュ時にセッションが空の場合はログインボックスがポップアップするので、ログインしていないことが検出されたら、次のようにページをリフレッシュすればよい: .
[http://msdn.microsoft.com/zh-cn/library/gg416513(v=vs.98).aspxより抜粋]
まずTempDataを見てみましょう.データは1回までのControllerでしか転送できません.また、各要素は1回しかアクセスできません.アクセス後、自動的に削除されます.一時的なキャッシュ内容やエラーページを投げ出す際にエラーメッセージを渡すのが一般的であるため,異常情報の伝達にはTempDataが用いられる.
プロジェクトでは、認証クラスのユーザーがログインしているかどうか、および異常クラスのエラーログ記録機能のみを検証します.システムのデフォルト実装を継承できる抽象クラスAuthorizeAttribute,HandleErrorAttribute
public override void OnAuthorization(AuthorizationContext filterContext)
{
HttpContextBase context = filterContext.HttpContext;
if (null == context.Session["User"])
{
filterContext.Result = new RedirectResult("~/Home/ReLogin");
}
//base.OnAuthorization(filterContext);
}
public override void OnException(ExceptionContext filterContext)
{
Exception ex = filterContext.Exception;
// ex.Message
ILog log = LogManager.GetLogger("Exception");
log.Error(ex.Message);
log.Error(ex.StackTrace);
TempData["errMsg"] = ex.Message;
filterContext.ExceptionHandled = true;
filterContext.Result = new RedirectResult("~/Home/ErrorMsg");
//base.OnException(filterContext);
}
window.location.reload();
[http://msdn.microsoft.com/zh-cn/library/gg416513(v=vs.98).aspxより抜粋]