2015-09-27 81 views
0

我需要在瀏覽之前檢查每次是否設置了某個會話。如果會話已設置,則會允許用戶訪問他/她所需的頁面。否則將他重定向到會話設置控制器&操作。爲了這個動作,我做了下面的任務。但我可以找到從過濾器重定向的方法。當從自定義過濾器返回false時,它將重定向到Account Controller。我會很感激他會幫助我的人。
在我的Global.asax.cs我這個編碼:默認從ASP MVC過濾器返回false重定向到帳戶控制器

protected void Application_Start() 
{ 
    ...... 
    ...... 
    RegisterGlobalFilters(GlobalFilters.Filters); 
} 

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new CustomFilters()); 
} 

然後我在過濾器/ CustomFilters.cs目錄添加喝道代碼。

[AttributeUsage(AttributeTargets.Assembly|AttributeTargets.Class| AttributeTargets.Method)] 
public class CustomFilters : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext.Session["HamdunSoft"] == "HamdunSoft") 
     { 
      return true; 
     } 
     else 
     { 
      return false; //I need to redirect to my custom Controller/Action. But from here 
         it is redirecting Account Controller default. 
     } 
    } 
} 
+1

'httpContext.Response.StatusCode = 302; httpContext.Response.RedirectLocation =「您的自定義控制器/操作」; httpContext.Response.End();' –

+0

謝謝,但你也可以告訴我何時返回代碼控制去的地方。是指帳戶控制器的重定向代碼:)? @KhanhTO –

+0

當你返回false時,它只是退出'CustomFilters'的代碼,但是流程繼續。重定向代碼就是我向您展示的所有代碼,它確實停止了當前的請求處理,並向發送另一請求並重新啓動流程的瀏覽器發送http 302重定向 –

回答

0

你需要重寫HandleUnauthorizedRequest功能也讓您可以重定向到所需的位置:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     if(filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      if (httpContext.Session["HamdunSoft"] != "HamdunSoft") 
      { 
       filterContext.Result = new RedirectToRouteResult(new 
       RouteValueDictionary(new{ controller = "YourCustomController", action = "YourCustomAction" })); 
      } 
      else 
      { 
       base.HandleUnauthorizedRequest(filterContext); 
      } 
     } 
     else 
     { 
      filterContext.Result = new RedirectToRouteResult(new 
      RouteValueDictionary(new{ controller = "Error", action = "AccessDenied" })); 
     } 
    } 
相關問題