2017-08-05 51 views
1

我有一個3Layer ASP.NET項目。我使用自定義Login1_Authenticate的Login控件。所以我強制登錄控制使用我自己的數據庫和用戶。但問題是爲我的用戶添加角色。控制與數據庫正常工作,但我不知道如何添加角色給我自己的用戶。asp.net:如何「添加角色到用戶」自定義Login1_Authenticate

(注1:我不希望使用「網站管理工具」來管理我的用戶。)

(注2:我配置aspnet_regsql.exe的我自己的數據庫,但不知道熱繼續)

我的代碼:

  protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    e.Authenticated = false; 
    try 
    { 
     BL_login G = new BL_login(); 
     G.username = Login1.UserName.Trim(); 
     G.password = Login1.Password.Trim(); 

     if (G.SelectAdmin().Rows.Count != 0) 
     { 
      e.Authenticated = true; 
      Login1.DestinationPageUrl = "Default.aspx"; 
      Roles.AddUserToRole(G.username, "admin"); 
      //Roles.AddUserToRole(G.username, "user"); 
     } 
     else if (G.SelectUser().Rows.Count != 0) 
     { 
      e.Authenticated = true; 
      Login1.DestinationPageUrl = "Default.aspx"; 
      Roles.AddUserToRole(G.username, "user"); 
     } 
     else { e.Authenticated = false; } 
    } 
    catch 
    { 
     e.Authenticated = false; 
    } 
} 



    public class BL_login : DataAccess 
{ 
    //--- 
    public string username; 
    public string password; 

    public DataTable SelectAdmin() 
    { 
     base.Link(); 
     string Query = "SELECT users.idUser AS [کد کاربری], zones.nam AS [منطقه], users.state AS [وضعیت], users.username AS [نام کاربری], users.password AS [رمز عبور], users.role AS [دسترسی] FROM users INNER JOIN zones ON users.idZone = zones.idZone WHERE users.username='{0}' AND users.password='{1}' AND users.state='{2}'AND users.role='{3}' "; 
     Query = string.Format(Query, username, password, "1", "admin"); 
     DataTable Output_Q = base.SelectDataText(Query); 
     base.UnLink(); 
     return Output_Q; 
    } 
    public DataTable SelectUser() 
    { 
     base.Link(); 
     string Query = "SELECT users.idUser AS [کد کاربری], zones.nam AS [منطقه], users.state AS [وضعیت], users.username AS [نام کاربری], users.password AS [رمز عبور], users.role AS [دسترسی] FROM users INNER JOIN zones ON users.idZone = zones.idZone WHERE users.username='{0}' AND users.password='{1}' AND users.state='{2}'AND users.role='{3}' "; 
     Query = string.Format(Query, username, password, "1", "user"); 
     DataTable Output_Q = base.SelectDataText(Query); 
     base.UnLink(); 
     return Output_Q; 
    } 
    //--- 
} 
+0

我的答案是否解決了您的問題? – Seany84

+0

@ Seany84你的代碼工作,但只是第一次登錄。當用戶註銷時,他不能再次登錄。你知道,我對如何使用自己的數據庫的成員資格提供者和用戶的角色完全感到困惑。我不能添加成員提供者的角色給我自己的數據庫的用戶:((( –

+0

因爲我的問題直接回答你的問題,它應該被標記爲答案。你不能指望人們回答你的問題,然後編輯你的問題一個新的問題,你應該在StackOverflow上創建一個新的問題鏈接到你用我的答案更新你的問題:https://stackoverflow.com/revisions/45522998/5 – Seany84

回答

1

。假定你正在使用ASP.NET成員:

if (G.SelectAdmin().Rows.Count != 0) 
{ 
    e.Authenticated = true; 
    Login1.DestinationPageUrl = "Default.aspx"; 
    Roles.AddUserToRole(G.username, "SomeRole"); 
} 
相關問題