2012-02-09 151 views
6

我正在將ASP.NET Web Forms中的應用程序遷移到ASP.NET MVC 3.其中一箇中心和關鍵部分當前被鎖定在其自己的目錄中。ASP.NET MVC 3中的自定義授權

<location path="home" allowOverride="false"> 
    <system.web> 
    <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 

我的問題是,如何實現在ASP.NET MVC 3中的相同類型的安全性:我已經從通過使用我的web.config文件下面這個目錄訪問受限未授權的用戶?我有一個預感,它涉及到在我的控制器類上設置屬性。但是,AuthorizeAttribute看起來像只接受用戶名列表,而不是驗證狀態(如果我錯了,請糾正我)。我查看了ASP.NET Internet應用程序示例,但沒有看到任何特殊的配置。

有人可以請指出我在這個正確的方向嗎?

謝謝!

+0

看看我的問題的接受答案:http://stackoverflow.com/q/746998/1796 – 2012-02-09 16:05:31

回答

5

這是正確的,你會利用AuthorizeAttribute,像這樣:

[Authorize] 
public ActionResult AuthenticatedUsers() 
{ 
    return View(); 
} 

[Authorize(Roles = "Role1, Role2")] 
public ActionResult SomeRoles() 
{ 
    return View(); 
} 

[Authorize(Users = "User1, User2")] 
public ActionResult SomeUsers() 
{ 
    return View(); 
} 

至於「權威性的地位」,我不知道我知道你的意思。聽起來像Roles將處理該認證要求。

+0

'[Authorize]'attriute應該驗證他們通常被認證。當我讀到它時,OP就在尋找。我想他可能會覺得Roles參數是必需的。此外,應該注意的是,這些屬性可以應用於控制器類本身,以完全相同的方式處理它們,而不必爲每種方法定義它們。 – 2012-02-09 16:03:47

0

如果需要,您仍然可以在web.config中執行授權。大多數人會使用[授權]過濾器將其授權權限移至動作或整個控制器(或基礎控制器)。

的授權過濾器支持角色或用戶相同的web.config文件做(使用*和?的「認證」和「匿名」)

如果用戶和角色不會爲你做檢查這篇文章上創建一個自定義授權屬性:

ASP.NET MVC Custom Authorization

0

您將使用授權屬性說哪些用戶或角色將有權限訪問控制器(如果你把一個控制器,這些權限會爲此控制器中的所有操作設置)或一個操作。看:http://build.mt.gov/2011/10/27/aspnet-mvc3-and-the-authorize-attribute.aspx。誰將提供角色(來自特定用戶)的Rembember將成爲RoleProvider,就像您在asp.net webforms中使用的那樣。