2013-12-23 43 views
0

我有一個Web應用程序需要兩種類型的用戶,井3,但第三個不需要角色:管理員可以訪問每個頁面,包括允許控制的管理頁面超過會員;會員可以訪問除管理頁面以外的每個頁面,並且可以發佈他們的數據(遊戲高分);以及可以訪問除管理頁面之外的所有頁面的客人,他們無法真正做到任何事情。管理和限制角色不使用成員資格

四處尋找我發現ASP.NET有角色,但它們只與三種類型的角色提供者(SqlRoleProvider,WindowsTokenRoleProvider和AuthorizationStoreRoleProvider)綁定。此外,我不確定,但我認爲ASP.NET的角色連接到整個會員的事情,這意味着,除非我使用ASPNETDB.mdb數據庫一切都失敗。

無論如何,我必須限制每個人,但管理員從入口到管理頁面,並允許成員發佈他們的分數。我現在的想法是,在登錄時,當我對用戶進行身份驗證時,我將用戶角色存儲在cookiless會話數據中,並在每次加載頁面時讀取它並相應地執行。有沒有更好的辦法?

回答

1

Asp.net成員資格不綁定到數據庫,你可以推出自己的,但我假設你將用戶存儲在某種數據庫中,所以SqlProfileProvider可能是足夠的(這可以是任何數據庫,不需要是ASPNETDB.mdb)。關於添加到現有的DB這種支持

詳細信息是在這裏:Create ASP.Net membership database structure in existing database

你會需要這樣的東西的會員,你將需要登錄,您需要的角色,這是會員API是什麼一回事。它也使用行業標準存儲等,這樣你就不會自己編寫一個安全漏洞。

然後,您可以使用web.config文件按角色限制單個頁面或更常見的整個文件夾(例如admin文件夾)。

0

嗯,只要您在自己的數據庫中註冊成員資格和角色服務,如何調用數據庫並不重要。這與運行不帶任何參數的aspnet_regsql命令提示工具一樣簡單,它將啓動向導(.net樣式)來指導您完成這些服務的安裝。它所做的就是在你想要的數據庫中創建sql服務器對象(模式,表格,sprocs等) 現在,如果你不喜歡這些內置的提供者(特別是我沒有),沒有什麼能阻止你實現你自己的,很簡單,但也許是一個漫長的過程,因爲您需要實施/覆蓋的抽象或虛擬方法的數量取決於您的方法或需要。你兩個選擇,以實現自己的...

  • 一個正在實施RoleProvider抽象抽象類或

  • 擴展/從SqlRoleProvider類暴露了很多的虛擬方法和屬性繼承。

相關問題