پیاده سازی ورود کاربر در ASP.Net

در این مقاله می خواهیم در مورد چگونگی پیاده سازی نشست دائمی ورود کاربر در ASP.Net با استفاده از #C توضیح دهیم ، که این پیاده سازی به وسیله ی فرم های مبتنی بر احراز هویت (Authentications) و (Cookies) در Asp.NET اجرا شده است.

پیاده سازی ورود کاربر در ASP.Net

یک جدول به نام Users با فیلد های زیر را در دیتابیس خود میسازید:

این مثال شامل دو صفحه خواهد بود که یک صفحه ، صفحه ی Login.aspx هست که کاربر نام کاربری و رمز عبور خود را وارد می کند، Home.aspx صفحه ای است که کاربر بعد از احراز هویت که با موفقیت انجام شود وارد صفحه ی دوم خواهد شد.

این فرم ورود کارهای زیر را انجام می دهد:

1-تایید هویت کاربر با تایید نام کاربری و رمز عبور

2-کاربر حساب کاربری خود را فعال کرده باشد

ابتدا صفحه ی Login.aspx را به صورت زیر طراحی میکنید :

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

داخل code behind خود باید namespaces های زیر را قرار دهید:


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

داخل دیتابیس رفته و Stored Procedure زیر را می نویسید:



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

این Stored Procedure چک می کند که اگر نام کاربری و رمز عبور اگر درست بوده است 1- را بر گرداند، اگر نام کاربری و رمز عبور درست بود اما کاربر فعال نبود  2-بر می گرداند، اگر کاربر رمز و نام کاربری را درست وارد کرده بود و فعال بود دوباره به  Stored Procedureبر می گردد.

کد زیر مربوط به رویدادی است که کاربر دکمه ی ورود را می زند:

که نام کاربری و رمز عبور وارد می شود و بعد    Stored Procedureرا می خواند در صورتی که مقدار 1- نباشد (نام کاربری و رمز عبور صحیح نیست) یا 2- نباشد (یعنی کاربر فعال نیست) سپس کاربر هدایت می شود به صفحه ی Home.aspx به وسیله ی روش FormsAuthentication و RedirectFromLoginPage

بعد از اینکه کاربر با موفقیت وارد شد کاربر وارد صفحه ی Home.aspx  می شود ، این صفحه نام کاربری که وارد شده است را نمایش می دهد و  تاریخ آخرین باری که کاربر آنلاین بوده است را نمایش می دهدو اجازه می دهد که کاربر خارج شود داخل صفحه ی Design UI کد زیر را وارد می نمایید:

   خوش آمدید
        <asp:LoginName ID="LoginName1" runat="server" Font-Bold="true" />
        <br />
        <br />
        <asp:Label ID="lblLastLoginDate" runat="server" />
        <asp:LoginStatus ID="LoginStatus1" runat="server" LoginText="ورود" />

هم چنین داخل صفحه ی Home.aspx باید namespaces زیر را وارد نمایید:


using System.Web.Security;

در صفحه ی Load کد زیر را می نویسیم:


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

اول احراز هویت کاربر را تشخیص می دهد اگر کاربر احراز هویت اش نادرست بود به صفحه ی Login بر می گردد و دوباره از روش های  FormsAuthentication RedirectToLoginPageاسنفاده می کند.

در آخر نیاز هست که داخل web.config کد زیر را وارد نمایید:


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

خروجی به صورت زیر خواهد بود:

 

دانلود فایل های ضمیمه مخصوص اعضای سایت می باشد !
کاربر مهمان! جهت دانلود و استفاده از امکانات سایت لطفا وارد سایت شوید و یا ثبت نام کنید