2012-09-20 43 views
0

我們正在創建一個MVC4文檔檢索網站,其中一些文檔需要驗證,而其他文檔允許匿名訪問。有沒有辦法執行條件認證?

該URL包含用於檢索文檔列表的文件夾ID。有時候沒有文件需要認證,有時候所有文件都有,有​​時候是混合。

我該如何處理?提前致謝。

回答

0

我會將bool RequiresAuthentication項添加到包含文檔的數據庫表中。如果文檔是免費的(不需要授權),則這將是false,如果不是,則爲true

然後你可以在提供文檔的控制器中做這樣的事情。

public Details(int Id) 
{ 
    Document doc = databaseContext.Document.Find(Id); 
    if(doc.RequiresAuthentication) 
    { 
     if(User.Identity.IsAuthenticated) 
     { 
      return View(doc); 
     } 
     // If the user is not authenticated, redirect them to log on 
     return RedirectToAction("LogOn", "Account"); 
    } 
    else 
    { 
     return View(doc); 
    } 
} 

你甚至可以通過一個returnUrl在日誌上這樣一旦他們在用戶登錄被重定向回他們想要的文件。

1

您可以在獲取潛在受限文檔的操作上創建自定義授權過濾器。

它將首先檢查文檔是否需要授權,方法是將其與受限文檔的靜態緩存ID列表進行比較。

然後,如果文檔被限制,過濾器將檢查當前用戶是否被授權。如果用戶被授權,該操作將被正常渲染。否則,操作結果應該放置401/403(以適用者爲準)或重定向到默認的「未經授權」頁面。

相關問題