2017-03-21 28 views
1

我有中間件用於身份驗證的目的,並需要通過類型區分用戶,如果他們是內部或外部。在此之後,我想將外部用戶重定向到自定義錯誤頁面,因爲他們不應該訪問我的網站的特定部分。如何將用戶從OWIN中間件重定向?

我想扔我的自定義狀態代碼HttpResponseException並通過在我的錯誤頁面鏈接到web配置的customErrors部分來處理它。但是我不能用這種方式使用自定義狀態代碼,並且使用現有代碼之一在我的情況下是不好的主意。

說實話,我對OWIN中間件還是比較陌生的,我甚至不知道google是什麼。我將非常感激提示如何解決這種情況。

回答

1

嘿看看這個:

public void Configuration(IAppBuilder app) 
     { 
      ConfigureApp(app); 
      //Some other code here 
      if (_helper.IsNew()) 
      { 
       Debug.Write("This is a new guy. Redirect him to the setup page permanently"); 

       var ctx = new OwinContext(); 
       ctx.Response.Redirect("/Setup");//This is how I redirect from Startip.cs 

      }    

     } 

觀察,我在IF正在檢查truthy代碼,就這樣,我會創建一個新的OWIN環境和不重定向那裏。 我也可以指定重定向狀態碼:301/302。但沒有這些,上面的代碼也可以正常工作

0

您應該能夠設置response code303 See Other)在中間件的response對象和location頭要重定向用戶。

當您根據自己的業務邏輯進行操作時,不應該調用next函數,並且用戶將被重定向到新位置(如果堆棧中沒有其他中間件會更改響應)。

記得在web api或mvc之前註冊你的中間件。

您可以谷歌爲web api building custom middleware。這裏是一個示例文章,你可以找到Writing Custom Middleware for ASP.NET

相關問題