Ngôn ngữ ASP.NET - Điều khiển Login

Điều khiển Login

Điều khiển Login đưa ra một form đăng nhập tiêu chuẩn. Mặc định điều khiển Login sử dụng ASP.NET MenberShip để kiểm chứng người sử dụng, tuy nhiên bạn có thể tùy chỉnh kiểu kiểm chứng người sử dụng với điều khiển Login. Điều khiển Login hỗ trợ rất nhiều thuộc tính cho phép bạn tùy chỉnh cách hiển thị và ứng xử của điều khiển.
Dưới đây một số thuộc tính, sự kiện của <asp:Login>:

Các thuộc tính Login control

Thuộc tính Giải thích
TitleText Hiển thị tiêu đề trang (ví dụ: Đăng nhập).
InstructionText Hiển thị nội dung văn bản sau tiêu đề trang web (ví dụ:Vui lòng nhập tài khoản và mật khẩu).
UserNameLabelText Tiêu đề nhãn cho username (ví dụ: Tài khoản:).
PasswordLabelText Tiêu đề nhãn cho password (ví dụ: Mật khẩu:).
FailureText Hiển thị thông báo lỗi, khi đăng nhập thất bại (Ví dụ: Bạn đăng nhập không thành công, Vui lòng thử lại.)
UserName Giá trị khỏi tạo cho TextBox của ô username (ví dụ: admin).
UsernameRequiredErrorMessage Hiển thị thông báo username bắt buộc nhập (ví dụ:Vui lòng nhập username.)
LoginButtonText Gắn nhãn cho nút Login Button (ví dụ: Đăng nhập).
LoginButtonType Button/Link/Image. Chọn loại button cho Login Button.
DestinationPageUrl Đường dẫn đến trang sau khi đăng nhập thành công.
DisplayRememberMe true/false. Hiển thị CheckBox nhớ mật khẩu (ví dụ: Nhớ mật khẩu).
VisibleWhenLoggedIn true/false. Nếu false, Control login không hiển thị trên trang web, nếu đăng nhập thành công.
CreateUserUrl Đường dẫn đến trang tạo User (Ví dụ: ~/logincontrol/CreateUser.aspx).
CreateUserText Nhập nhãn cho Hyperlink tạo user (ví dụ: Đăng ký).
PasswordRecoveryUrl Liên kết với trang quên mật khẩu (Ví dụ:~/logincontrol/ForgotPassword.aspx).
PasswordRecoveryIconUrl Hiển thị liên kết ForgotPassword.aspx dạng hình.
PasswordRecoveryText Nhập nhãn cho Hyperlink cho trang quên mật khẩu (ví dụ: Quên mật khẩu).
PasswordRequiredErrorMessage Hiển thị thông báo mật khẩu bắt buộc nhập (ví dụ:Vui lòng nhập mật khẩu.)

Các định dạng Login Control

Thuộc tính Giải thích
CheckBoxStyle Định dạng cho thuộc tính CheckBox Remember Me.
FailureStyle Định dạng cho thuộc tính FailureStyle.
TitleTextStyle Định dạng cho thuộc tính FailureStyle.
LoginButtonStyle Định dạng cho thuộc tính Login button.
TextBoxStyle Định dạng cho thuộc tính TextBox.
LabelStyle Định dạng cho thuộc tính nhãn của TextBox.
HyperLinkStyle Định dạng cho thuộc tính hyperlink .
InstructionTextStyle Định dạng nội dung văn bản sau tiêu đề trang web.

Các sự kiện Login Control

Sự kiện Giải thích
LoggingIn Sự kiện xảy ra trước khi user đăng nhập.
LoggedIn Sự kiện xảy ra sau khi user đã đăng nhập.
LoginError Sự kiện xảy ra sau khi đăng nhập bị lỗi.
Authenticate Sự kiện này xác nhận việc đăng nhập của user. Viết code kiểm tra user đăng nhập trong sự kiện này.

Ví dụ: Dùng điều khiển Login tạo nút đăng nhập

Bước 1: Kéo Listbox từ thanh Toolbox vào trang web

Bước 2: Chọn mẫu cho điều khiển Login

Bước 3: Khai báo các thuộc tính cho điều khiển Login

Bước 4: Cấu hình file web.config, web site đặt trong thư mục logincontrol

<configuration> 
<system.web>
   <authentication mode="Forms">
    <forms name="appNameAuth" loginUrl="~/logincontrol/Login.aspx"  timeout="30">
    </forms>
  </authentication>
    
  </system.web>
  <!--MÔ TẢ CÁC TRANG CẦN BẢO VỆ Các trang trong thu mục logincontrol phải đang nhập-->
  <location path="logincontrol">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

Code trang Login.aspx :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="logincontrol_Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        
        <asp:Login ID="Login1" runat="server" BackColor="#F7F7DE" BorderColor="#CCCC99" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="10pt" CreateUserText="Đăng ký" CreateUserUrl="~/logincontrol/CreateUser.aspx" FailureText="Bạn đăng nhập không thành công, Vui lòng thử lại." InstructionText="Vui lòng nhập tài khoản và mật khẩu" LoginButtonText="Đăng nhập" PasswordLabelText="Mật khẩu:" RememberMeText="Nhớ mật khẩu." TitleText="Đăng nhập" UserNameLabelText="Tài khoản:" DestinationPageUrl="~/logincontrol/Admin.aspx" OnAuthenticate="Login1_Authenticate" PasswordRecoveryText="Quên mật khẩu" PasswordRecoveryUrl="~/logincontrol/ForgotPassword.aspx" PasswordRequiredErrorMessage="Mật khẩu không được rỗng." UserNameRequiredErrorMessage="Tài khoản không được rỗng." Width="402px">
            <TitleTextStyle BackColor="#6B696B" Font-Bold="True" ForeColor="#FFFFFF" />
        </asp:Login>

    </div>
    </form>
</body>
</html>

Code Login.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Security;
public partial class logincontrol_Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
            ViewState["LoginErrors"] = 0;
    }
    private bool CheckAccount(string UserName, string Password)
    {
        bool boolReturnValue = false;       
        string strConnection = "Data Source=.;Initial Catalog=QLBANSACH1;Integrated Security=True";
        SqlConnection sqlConnection = new SqlConnection(strConnection);
        String SQLQuery = "SELECT TenDN, MatKhau FROM KhachHang where TenDN='"+UserName+"' and MatKhau ='"+Password+"' ";
        SqlCommand command = new SqlCommand(SQLQuery, sqlConnection);
        SqlDataReader Dr;
        sqlConnection.Open();
        Dr = command.ExecuteReader();
        if (Dr.Read())
        {
            if ((UserName == Dr["TenDN"].ToString()) & (Password == Dr["MatKhau"].ToString()))
            {
                boolReturnValue = true;
            }
            Dr.Close();
            return boolReturnValue;
        }
        return boolReturnValue;
    }
    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        if (CheckAccount(Login1.UserName, Login1.Password))
        {
            FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true); 
            e.Authenticated = true;
            // Response.Redirect();
            Login1.Visible = false;
          
        }
        else
        {
            e.Authenticated = false;
        }
    }

}

Trong code này tài khoản được kiểm tra trong co sở dữ liệu

Thực thi trang web và nhập tài khoản đăng nhập sai cho kết quả:

Nhập tài khoản đúng: