私は、サンプルページA、B、C、DのWebサイトを持っています。登録されています。残りのページにアクセスするには、ユーザーが他のユーザーとの間で支払いを行うなど、いくつかの参加手続きを完了する必要があります。Asp.net MVCユーザーが特定の条件でアプリケーション全体にアクセスするのをブロックする
簡単な方法は、現在完了しているすべてのページにチェックを追加して、リクエストされたページB、C、D ...がすべての参加手続きを完了した場合にのみ表示されるようにすることです。これにより、既存のすべてのページをもう一度やり直す必要があります。また、今後開発されるすべてのページでは、そのチェックを追加することを覚えておく必要があります。私はAuthorizeAttributeから継承したカスタム認可属性クラスを使用して、あなたがあまりにも多くのORがある見ることができるように
else if (!SessionCache.FormalitiesCompleted)
{
//force completion of formalities
if (!(string.Equals(filterContext.ActionDescriptor.ActionName, "Index", StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(filterContext.ActionDescriptor.ActionName, "Options", StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(filterContext.ActionDescriptor.ActionName, "Index_B", StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(filterContext.ActionDescriptor.ActionName, "Index_C", StringComparison.InvariantCultureIgnoreCase)
&& string.Equals(filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, "Formalities", StringComparison.InvariantCultureIgnoreCase)))
{
string _action = filterContext.ActionDescriptor.ActionName;
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Formalities", action = _action, area = "FormalitiesArea" }));
}
}
以下のスニペットのようにそこにOnAuthorization上書き方法でチェックを作っこの周りに来て
IFの条件。私は、形式の複雑さが増すにつれてこれが増加すると考えています。
手続きが完了しない限り、サイトの他のページにアクセスしないようにするためのより良い方法はありますか?
お時間をいただきありがとうございます。