2013-12-21 16 views
1

我很難理解Role機制如何與ASP.NET一起工作。在ASP.NET的FormAuthentication登錄頁面的每次登錄時爲用戶分配角色?

我有一個Microsoft SQL Server數據庫,其中一切都已經設置,我不想添加/刪除/修改表。 「用戶」表中有一個字段通過引用「類型」表中的條目的標識來指定用戶的「角色」。我想用這個字段來區分用戶的類型(例如管理員,高級或標準)。

每次連接時都不可能爲用戶分配一個角色?

我的意思是在Login.aspx.cs是這樣的:

protected void btn_login_Click(object sender, EventArgs e) 
{ 
    // On authentifie l'utilisateur via la BLL 
    BusinessLogicLayer bll = new BusinessLogicLayer(); 

    Utilisateur user = bll.authenticate(txt_login.Text, txt_password.Text); 

    // SUCCEEDED AUTH 
    if (user != null) 
    { 
     // Ajout de l'utilisateur à son role correspondant 
     if (user.Type1.nom == "lecteur") 
      Roles.AddUserToRole(user.login, "lecteur"); 

     else if (user.Type1.nom == "journaliste") 
      Roles.AddUserToRole(user.login, "journaliste"); 

     else if (user.Type1.nom == "administrateur") 
      Roles.AddUserToRole(user.login, "administrateur"); 

     FormsAuthentication.RedirectFromLoginPage(user.login, cb_remember.Checked); 
    } 

    // FAILED AUTH (si on arrive jusqu'ici vu qu'on a pas été redirigé) 
    else 
     lbl_invalidCredentials.Visible = true; 
} 

我已經閱讀了ASP.NET網站上的教程,但它使用的是我無法實現特定的數據庫配置。

+1

這聽起來像你的 「角色」 機制是不是與ASP.NET角色提供者設置兼容。 (您的要求每個用戶只有一個角色,而通常ASP.NET允許多對多的用戶角色)。您可以嘗試編寫自定義角色提供程序,但可能無法完成整個界面。 – David

+0

自定義角色提供程序聽起來像這裏阻力最小的路徑 - http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx –

+0

實現自定義角色提供程序似乎太重,我的基本ASP.NET網站。我想我會選擇不使用角色並在每個頁面後面的代碼中驗證用戶是否是管理員的簡單選項。 – gilgha

回答

0

角色管理器默認使用ASPDBNET.mdf(成員資格)。

,如果你想創建自定義角色提供試試這個:

How to: Sample Role-Provider Implementation

更新:在登錄頁面


你可以用它代替角色管理器會話

Session["role"] = "lecteur" ; 

在管理頁面:

if(Session["role"]!=null) 
{ 
    if(Session["role"]=="lecteur") 
    { 
     //welcome admin 
    } 
    else 
    { 
     //access denied 
    } 
} 
else 
{ 
    //access denied 
} 

更新

,或者您可以使用role provider into linq

+0

實現一個自定義角色提供者似乎太重,我的基本ASP.NET網站。我想我會選擇不使用角色並在每個頁面後面的代碼中驗證用戶是否是管理員的簡單選項。 – gilgha

+0

@gilgha我的答案已更新 –

+0

好的,但是是否可以通過使用該解決方案的Web.config文件中的標記限制整個目錄(admin目錄)的訪問?還是必須在每個管理頁面後面的代碼中實現自己的驗證? – gilgha