2017-08-05 73 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"); 
} 
相关问题