2012-09-06 37 views
1

假設用於社交網絡上下的項目,你有一個if語句如:有沒有辦法使用ASP.Net成員資格來動態授予權限?

if (currentMember.IsFriendsWith(otherMember)....

你會如何爲當前用戶授予權限只有persmission看到otherMember's個人資料,如果該方法返回了真正的價值?

+1

顯然您的會員用戶是關係到通過關係表'user_friends'其他用戶。所以你可以編寫一個方法,通過傳遞兩個用戶標識符(或擴展自定義成員資格提供程序類)來檢查它。它不是(不一定需要)是ASP.NET身份驗證過程的一部分。 –

+1

這是一個設計問題。它也將決定你想如何存儲權限。 – gideon

+0

您不應該使用會員提供商來實現您的友誼關係的業務邏輯。 –

回答

0

public IQueriable<GUID> FriendsUserKey { get; set; }添加到用戶的配置文件模型可能會更簡單。這樣你就可以看到FriendsUserKey是否包含另一個用戶的密鑰,如果是,那麼他們是朋友。

然後,你可以寫自己想要的方式方法,currentMember.IsFriendsWith(otherMember)

要小心,不要立足這一關的UserName情況下,用戶將被刪除,後來的新用戶使用相同的UserName

要回答您的標題,「有沒有辦法使用ASP.Net成員資格來動態授予權限?」是的,從某種意義上說,您可以動態地添加和創建角色,但是這不會成爲解決這種情況的方法。

要創建角色,Roles.CreateRole("roleName");和將用戶添加到這個角色,Roles.AddUserToRoles("userName", "roleNames");