Нужна помощь в коде входа в asp .net - PullRequest
0 голосов
/ 12 февраля 2009

Кто-нибудь, пожалуйста, помогите мне, изменив этот код. На моей странице входа у меня есть три столбца Логин, Имя пользователя, Пароль. При входе я сохранил выпадающий список с двумя элементами списка: Админ и Пользователь. Поэтому, когда я выбираю Админ, Имя пользователя, Пароль, его должен перейти на нужную страницу назначения, и когда я выбираю пользователя, имя пользователя, пароль, он должен перейти на другую страницу назначения. Вот мой код. пожалуйста, помогите мне ......

Login.aspx:

<asp:Label ID="lblLogin" runat="server" Text="Login" CssClass="Label"></asp:Label>      
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
                                      <asp:ListItem>Admin</asp:ListItem>
                                        <asp:ListItem>User</asp:ListItem>
                                    </asp:DropDownList>            
<asp:Label ID="lblUserName" runat="server" Text="User Name"</asp:Label>                           
                            <asp:TextBox ID="TxtUserName" runat="server" TextMode="SingleLine"></asp:TextBox>                
                            <asp:Label ID="lblPassword" runat="server" Text="Password" CssClass="Label"></asp:Label>                      
                            <asp:TextBox ID="TxtPassword" runat="server" TextMode="Password"></asp:TextBox>                           
                        <td align="center">
                           <asp:Button ID="BtnLogin" runat="server" Text="Login"
                                 onclick="BtnLogin_Click"/> 

Login.aspx.cs:

protected void BtnLogin_Click(object sender, EventArgs e)
{
    Session["UserName"] = TxtUserName.Text;  
    Login lg = new Login();        
    if ((lg.GetLogin(TxtUserName.Text, TxtPassword.Text) == 1))
    {
        Response.Redirect("c1.aspx");
    }       
    else
    {           
        Lbl1.Text = "Sorry,Invalid UserName or Password";
    }     

Login.cs:

public  class Login
{    public string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
public int GetLogin(string UserName, string Password)
{
    SqlConnection con = new SqlConnection(str);      
    SqlDataAdapter da = new SqlDataAdapter("select * from Login where UserName='"+UserName+"' and Password='"+Password+"'",con);       
    DataSet ds = new DataSet();
    da.Fill(ds);
    if (ds.Tables[0].Rows.Count > 0)
    {
        if ((ds.Tables[0].Rows[0].ItemArray[1].ToString() == UserName) && (ds.Tables[0].Rows[0].ItemArray[2].ToString() == Password))
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else
    {
        return -1;
    }
}

Спасибо, Masum

Ответы [ 2 ]

1 голос
/ 12 февраля 2009

Во-первых, ваше открытие приложения и атака SQL-инъекцией. Я бы предложил по крайней мере использовать хранимую процедуру для запроса учетных данных для входа в вашу базу данных, чтобы минимизировать этот риск.
1-е правило пользовательского ввода - не доверяйте пользовательскому вводу.
Возможно, стоит взглянуть на этот вопрос для получения дополнительной помощи:

Каков наилучший способ избежать атак SQL инъекций

Что касается проблемы, с которой вы обращаетесь за помощью, вам, безусловно, нужно просто принять решение о перенаправлении на основе выбранного значения в раскрывающемся списке, если метод GetLogin () успешен.

protected void BtnLogin_Click(object sender, EventArgs e)
{
    Session["UserName"] = TxtUserName.Text;  
    Login lg = new Login();        
    if ((lg.GetLogin(TxtUserName.Text, TxtPassword.Text) == 1))
    {
        if(DropDownList1.SelectedValue == "Admin")
        {
            Response.Redirect("c1.aspx");
        }
        else if(DropDownList1.SelectedValue == "User")
        {
            Response.Redirect("c2.aspx");
        }
    }       
    else
    {           
        Lbl1.Text = "Sorry,Invalid UserName or Password";
    }
0 голосов
/ 12 февраля 2009

Возможно, вы захотите взглянуть на реализацию Аутентификация с помощью форм с защитой на основе ролей . Затем вы можете перенаправить в зависимости от того, играет ли пользователь определенную роль. Что-то вроде -

//if (HttpContext.Current.User.Identity.IsAuthenticated)
//{
    if (User.IsInRole("Administrator"))
    {
    Response.Redirect("myAdminPage.aspx");
    }
    else if (User.IsInRole("User"))
    {
    Response.Redirect("myUserPage.aspx");
    }
//}
    else
    {
    Lbl1.Text = "Sorry,Invalid UserName or Password";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...