پیاده سازی ورود کاربر در 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 تشکر