2012-07-23 76 views
2

我在爲我的公司編寫自定義SSO解決方案時遇到問題。爲了簡單起見,我製作了一個自定義身份驗證httpmodule,攔截所有請求以檢查用戶身份驗證狀態。如果未通過身份驗證,用戶將被重定向到我的自定義sso登錄頁面。什麼是Webform的「UrlAuthorizationModule.CheckUrlAccessForPrincipal」等同於MVC?

事情是,當用戶未通過身份驗證,我想檢查他是否可以訪問請求的頁面/資源...使用Webforms,沒問題,我在web.config中添加授權塊,並且我使用UrlAuthorizationModule.CheckUrlAccessForPrincipal與匿名用戶。一切正常......

但是,當我在我的模塊應用到MVC(3)網站,這不工作了(原因很明顯,就像可能性從訪問相同的控制器和/或行動使用路由時不同的URL,因爲授權是通過控制器屬性進行的)。

我該如何做到這一點?我一整天都在搜索,沒有找到任何有關的信息:/

+0

回答這裏 - > http://stackoverflow.com/questions/19038186/mvc-equivalent-of-webforms-urlauthorizationmodule-checkurlaccessforprincipal – MichaC 2013-09-26 21:49:47

回答

0

ASP.NET MVC 3 Internet應用程序模板包含一個基本的AccountController,它實現了以下操作(以及相關的模型和視圖):

  • LogOn支持
  • 註冊
  • ChangePassword/ChangePasswordSuccess

你只需要在操作或CL的[授權]屬性驢想要保護。但是如果你需要一些非常自定義的東西,你可以像我所做的那樣做。

我創建了一個自定義類來覆蓋我的應用程序中的安全性。

public class AuthorizeActivityAttribute : AuthorizeAttribute 
    { 
     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 
     HttpContext currentContext = HttpContext.Current; 

     //Do your custom authentication stuff here and return true or false depending on results 
     Return true; 
     } 
    } 

現在在我的控制器我有以下幾點:

[AuthorizeActivity] 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Welcome"; 

     return View(); 
     } 
+0

感謝名單回答;),但是這不是我問不幸。我已經知道如何保護對控制器和操作的訪問,但是我需要的是:在控制器處理請求之前(當我在httpmodule中時)如何以編程方式知道當前請求是被允許還是拒絕? – PAP 2012-07-23 21:27:38

相關問題