2009-09-30 68 views
2

我想在我的ASP.NET MVC應用程序中實現一個自定義RoleProvider。如何實現自定義RoleProvider?

我已經創建了一個自定義的MembershipProvider,它的工作原理是,我能夠成功驗證用戶。下一步是實施RoleProvider,以限制只有管理員用戶才能訪問certian控制器。

任何人都可以提供我需要採取的步驟的簡要概述嗎?

,我是在現在的問題是我有我的控制器與授權過濾器,象這樣:

[Authorize(Roles="Admin")] 
public class AdminOnlyController : Controller 
{ 
    // stuff 
} 

,我有我的CustomRoleProvider類,用下面的方法與不可─的負載沿實施方法:

public override string[] GetRolesForUser(string username) 
{ 
    if (username == "dave") 
    { 
     return new string[] { "Admin" }; 
    } 
} 

我想我需要添加用戶的角色莫名其妙,但我不知道該怎麼做。理想情況下,最終的結果將是,其中未經授權的用戶無法訪問某些控制器的場景,我在我的意見,我可以決定是否顯示鏈接的東西,如:

if (User.IsInRole("Admin")) 
{ 
    // show links to Admin Controllers 
} 

任何人都可以點我在正確的方向?

回答

2

對於未執行的方法,一定要拋出NotImplementedException。這應該可以幫助您找出自定義提供程序需要哪些方法才能完成工作。我想你必須執行IsUserInRole

3

我就以此爲作爲一個自定義角色經理底線:http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

應該在MVC或網頁形式的工作。

更新:由於該網頁不再存在,您可以嘗試使用this one。基本要求是你需要實現RoleProvider接口,即:

void AddUsersToRoles(string[] usernames, string[] roleNames) 
string[] GetRolesForUser(string id) 
bool RoleExists(string roleName) 
+0

此鏈接不再有效。如果這可能會更新,那將是很好的。 – 2012-05-23 13:41:36

+0

@JeffReddy更新了該鏈接和我的答案。 – Junto 2012-05-25 12:02:21