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

شنبه 4 مهر 1394

در این مقاله می خواهیم در مورد چگونگی پیاده سازی نشست دائمی ورود کاربر در 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>

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

 

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

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

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

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

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