2009-10-29 521 views
2

在什麼時候應該在我的mvc應用程序中檢查我的cookie?基本上,我希望爲每個請求執行的操作是檢查是否存在cookie,如果是,則在屏幕上顯示其姓名,如果沒有,則頁面要求用戶登錄後將其重定向到登錄頁面。自定義身份驗證asp.net MVC

我不想使用FormsAuthentication,因爲我希望創建和使用我自己的原型對象我只是不確定是否應該將它們設置在基本控制器類中或創建我自己的Authorize屬性並執行檢查在那裏。

我最初的想法是,我應該在基本控制器類中這樣做,因爲它與web表單中的基本頁面類似,我在其中重寫oninit。

+0

你可能希望看到[ASP.Net MVC自定義身份驗證](http://stackoverflow.com/q/1438151/148271) – IsmailS 2011-03-08 11:16:32

回答

3

不要嘗試在基本控制器類中進行身份驗證。在一個動作結果被緩存的情況下,你的動作根本不會運行,也不會有任何控制器被實例化。因此,authentication done inside the controller is broken by design

由於許多原因,定製身份驗證的正確方法是創建自定義身份驗證提供程序。我已經解釋了爲什麼的原因,並給出了在上面鏈接的帖子中如何做到這一點的簡單例子的鏈接。

總之,使用這種方法:

  • 具有模塊化
  • 與高速緩存的適當水平
  • 作品與普通ASP.NET,以及與MVC
+0

創建我自己的提供程序句柄是否創建可通過Context.User訪問的正確IPrincipal對象? 另外如何創建我自己的cookies並將它們與這個新的提供商鏈接? – Gazeth 2009-10-29 14:59:28

+0

你可以在自定義提供程序中完成所有這些工作,是的。 – 2009-10-29 15:27:10

+0

我在哪裏照顧這一切,我已經找到了子類化成員提供者的例子,但是沒有看到我會在哪裏創建自己的cookie並創建自己的iprincpal對象的任何示例,您是否知道這個的任何示例。 – Gazeth 2009-10-29 16:02:36