پیاده سازی ورود کاربر در ASP.Net
شنبه 4 مهر 1394در این مقاله می خواهیم در مورد چگونگی پیاده سازی نشست دائمی ورود کاربر در ASP.Net با استفاده از #C توضیح دهیم ، که این پیاده سازی به وسیله ی فرم های مبتنی بر احراز هویت (Authentications) و (Cookies) در 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>
خروجی به صورت زیر خواهد بود:

- ASP.net
- 4k بازدید
- 4 تشکر