بررسی ورود کاربر در Asp.net

سه شنبه 19 مرداد 1395

در این مقاله با استفاده از سی شارپ، یک فرم ورود ساده که با استفاده از Forms Authentication ساخته شده، ورود کاربر را از پایگاه داده تایید می کند، طراحی میکنیم و اگر کاربر تایید شده باشد، میتواند وارد شود و اگر نشده باشد به صفحه ورود فرستاده می شود.

بررسی ورود کاربر در Asp.net

پایگاه داده

با استفاده از همان کاربرانی که ثبت نام کرده اند این جدول را ایجاد کرده ایم.

در این برنامه دو صفحه ایجاد میکنیم که یکی از آن ها صفحه Login.aspx است که کاربر با استفاده از آن میتواند وارد صفحه دوم یعنی Home.aspx شود. 

صفحه Login

این صفحه کاربر را  از فعال بودن حساب کاربری مطلع می کند وبا بررسی و تایید نام کاربری و رمز عبور به آن اجازه ورود به صفحه را می دهد.

HTML

کد های html   این صفحه شامل یک کنترل Asp.net و یک رویداد  OnAuthenticate می باشد.

<form id="form1" runat="server">
<asp:Login ID = "Login1" runat = "server" OnAuthenticate= "ValidateUser"></asp:Login>
</form

Namespaces های مورد نیاز

using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Security;

Stored Procedure برای اعتبارسنجی

Stored Procedure برای اعتبارسنجی برای اولین بار چک میکند که آیا  نام کاربری و رمز عبور صحیح است و اگر صحیح بود -1 را return میکند.اگر نام کاربری و رمز عبور صحیح باشد ولی کاربر فعال نباشد -2  را return  می کند.اگر نام کاربری و رمز عبور درست باشد و حساب کاربر هم فعال شده باشد پس از آن userid آن ذخیره می شود.

CREATE PROCEDURE [dbo].[Validate_User]
      @Username NVARCHAR(20),
      @Password NVARCHAR(20)
AS
BEGIN
      SET NOCOUNT ON;
      DECLARE @UserId INT, @LastLoginDate DATETIME
     
      SELECT @UserId = UserId, @LastLoginDate = LastLoginDate
      FROM Users WHERE Username = @Username AND [Password] = @Password
     
      IF @UserId IS NOT NULL
      BEGIN
            IF NOT EXISTS(SELECT UserId FROM UserActivation WHERE UserId = @UserId)
            BEGIN
                  UPDATE Users
                  SET LastLoginDate = GETDATE()
                  WHERE UserId = @UserId
                  SELECT @UserId [UserId] -- User Valid
            END
            ELSE
            BEGIN
                  SELECT -2 -- User not activated.
            END
      END
      ELSE
      BEGIN
            SELECT -1 -- User invalid.
      END
END

اعتبار سنجی هویت کاربر

وقتی شما بر روی  دکمه Log In کلیک می کنید. نام کاربری و پسورد وارد شده و توسط stored procedure ارسال می شود و اگر مقدار آن -1 باشد، رمز عبور اشتباه است و اگر -2 باشد، حساب کاربری فعال نشده و پس از آن صفحه با روش FormsAuthentication RedirectFromLoginPage کاربر را به صفحه اصلی هدایت می شود.

protected void ValidateUser(object sender, EventArgs e)
{
    int userId = 0;
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("Validate_User"))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Username", Login1.UserName);
            cmd.Parameters.AddWithValue("@Password", Login1.Password);
            cmd.Connection = con;
            con.Open();
            userId = Convert.ToInt32(cmd.ExecuteScalar());
            con.Close();
        }
        switch (userId)
        {
            case -1:
                Login1.FailureText = "Username and/or password is incorrect.";
                break;
            case -2:
                Login1.FailureText = "Account has not been activated.";
                break;
            default:
                FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);
                break;
        }
    }
}

صفحه Home

پس از این که کاربر  با موفقیت به صفحه وارد شد به این صفحه هدایت می شود.

Html

کد هایHtml  این صفحه شامل کنترل LoginName برای نمایش نام کاربر است و LoginStatus برای خروج کاربر است.

Namespaces های مورد نیاز

using System.Web.Security;

هدایت کاربر به صفحه ورود در صورتی که عضو نباشد.

در داخل این رویداد لود صفحه ابتدا بررسی میشود که کاربر IsAuthenticated باشد در غیر این صورت RedirectToLoginPage اجرا نمی شود و کاربر در همان صفحه می ماند.

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.Page.User.Identity.IsAuthenticated)
    {
        FormsAuthentication.RedirectToLoginPage();
    }
}

پیکربندی Web.Config

شما باید  کد های زیر در <<system.web  وارد کنید.

<authentication mode="Forms"><forms defaultUrl="~/Home.aspx" loginUrl="~/Login.aspx" slidingExpiration="true" timeout="2880"></forms>
</authentication>

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید