проблема входа в asp.net - PullRequest
       20

проблема входа в asp.net

3 голосов
/ 22 июня 2011

Кажется, я не могу настроить систему аутентификации в asp.net У меня есть код для системы входа в систему:

protected void btnlogin_Click(object sender, EventArgs e)
{
    PageUser myUser = new PageUser();
    if (myUser.AuthenticateUser(txtUsername.Text, txtPassword.Text))
    {
        // entry found

        HttpCookie myCookie;

        DateTime now = DateTime.Now;

        myCookie = new HttpCookie("UserName");
        myCookie.Value = myUser.UserName;
        myCookie.Expires = now.AddMinutes(30);
        Response.Cookies.Add(myCookie);

        myCookie = new HttpCookie("LoginID");
        myCookie.Value = myUser.UserLoginID.ToString();
        myCookie.Expires = now.AddMinutes(30);
        Response.Cookies.Add(myCookie);

        lblResult.Visible = false;

        FormsAuthentication.SetAuthCookie(myUser.UserName + " " + myUser.UserLoginID.ToString(), true);

        Response.Redirect("AdminView.aspx");
    }
    else
    {
        // entry not found
        lblResult.Text = "<b>Invalid logon attempt<b>";
        lblResult.ForeColor = System.Drawing.Color.FromName("Red");
        lblResult.Visible = true;
    }
}

Метод аутентификации работает нормально, но когда я не вхожу в систему, он по-прежнему позволяет мне перенаправить пользователя AdminView, даже если человек не вошел в систему. Код, с которым я столкнулся с трудностями:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {

    }
    string userName = "";
    string[] splits;
    try
    {
        if (this.Page.User.Identity.IsAuthenticated)
        {
            splits = this.Page.User.Identity.Name.Split(new char[1] { ' ' });
            userName = splits[0] + " " + splits[1];

        }
        else
        {
            Response.Redirect("default.aspx");
        }
        txtLoggedInUser.Text += " - " + userName;
    }
    catch
    {
        Response.Redirect("default.aspx");
    }
}

Я не уверен, как написать этот код, чтобы он перенаправил человека обратно на страницу входа, когда он попытается посетить страницу администратора.

1 Ответ

0 голосов
/ 22 июня 2011

Чтобы ограничить пользователя, не прошедшего проверку подлинности, страницей AdminView.aspx, необходимо добавить ниже в раздел configuration файла web.config.

<location path="AdminView.aspx">
<system.web>
    <authorization>
        <deny users="?"/>               
    </authorization>
</system.web>

<deny users="?"/> означает, что пользователь unauthenticated не сможет получить доступ к файлу / папке AdminView.aspx

...