2010-12-06 95 views
1

我正在使用ASP.NET MVC的表單身份驗證。在應用程序級別的web.config中,我可以將需要身份驗證的路徑設置如下;動態路徑的ASP.NET MVC授權

<location path="subdir1"> 
<system.web> 
    <authorization> 
     <allow users ="?" /> 
    </authorization> 
</system.web> 
</location> 

subdir1是瀏覽文件夾內的文件夾名稱。這適用於網頁路由siteurl.com/subdir1

但是,如果我的subdir1在另一個動態創建的路線下,此設置不起作用。例如; siteurl.com/dynamic/subdir1不請求驗證。 動態是在運行時創建的,web.config在應用程序啓動時並不知道它,但它不應該關心它,我只是希望它在每次訪問subdir1路由時都要求身份驗證。

有沒有什麼辦法可以爲這種情況設置位置的路徑屬性?或者你有任何其他方式來解決這個問題?

任何幫助,將不勝感激。 cas sakal

回答

4

您可以通過在適當的操作或控制器上使用Authorize屬性來控制授權。

[Authorize] 
public ActionResult MyAction() 
{ 
    //stuff 
} 

一些更多的信息可以在ASP.NET MVC Authorization

找到
1

您應該在控制器/操作上使用AuthorizeAttribute,而不是在web.config文件中設置映射到控制器的路徑的訪問權限。如果不是所有操作都需要登錄用戶,則只需將該屬性應用於需要授權的那些操作(方法)。

[Authorize] 
public class ProtectedController : Controller 
{ 
    // all actions in this controller require the user to be logged in 
} 

public class MixedController : Controller 
{ 
    [Authorize] 
    public ActionResult ProtectedAction() 
    { 
     // this action requires the user to be logged in 
    } 

    public ActionResult PublicAction() 
    { 
     // this action is available to anonymous users 
    } 
}