ProfileRequiredActionFilter の実装があります。ユーザーのプロファイルが適切に入力されているかどうかを確認します。そうでない場合は、RegisterSecondStep でユーザーをリダイレクトします。
問題は、これがループ内のユーザーを永久にリダイレクトすることです..
public class ProfileRequiredActionFilter : IActionFilter
{
#region Implementation of IActionFilter
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
User user = UserTools.getUser(HttpContext.Current.User.Identity.Name);
if (user.NickName == null || user.Firstname == null || user.Surname == null || user.StateId == 0)
{
filterContext.Result = new RedirectResult("/Account/RegisterSecondStep");
}
}
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
#endregion
}
この部分をコードに追加しました。現在、ユーザーは RegisterSecondStep に一度リダイレクトされており、何もできません。一般的に - いいね。しかし、ユーザーがログアウトできるようにする方法は? このボタンもブロックされており、「ログアウト」をクリックするとリダイレクトされましたRegisterSecondStep
..
public class ProfileRequiredActionFilter : IActionFilter
{
#region Implementation of IActionFilter
public void OnActionExecuting(ActionExecutingContext filterContext)
{
string text = HttpContext.Current.Request.Url.AbsolutePath;
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
User user = UserTools.getUser(HttpContext.Current.User.Identity.Name);
if (user.NickName == null || user.Firstname == null || user.Surname == null || user.StateId == 0)
{
if (text != "/Account/RegisterSecondStep")
{
filterContext.Result = new RedirectResult("/Account/RegisterSecondStep");
}
}
}
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
#endregion
}
これが私がこのフィルターを実行する方法です
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ProfileRequiredActionFilter());
}