بررسی لاگین کاربر سایت با استفاده از WebForm
پنجشنبه 25 آذر 1395در این مقاله یک فرم ساده لاگین با استفاده از اعتبار سنجی کاربرهایی که در داخل پایگاه داده ثبت شده اند را با یک مثال توضیح خواهیم داد.
در اینجا بررسی میشود که کاربر لاگین کرده است یا خیر که در صورت لاگین نبودن به صفحه ی لاگین فرستاده میشود. و اگر کاربر بدون لاگین قصد دیدن صفحه ای را داشت باید اعتبار سنجی را در اینجا قرار دهیم.
پایگاه داده :
یک جدول به نام USERS در پایگاه ایجاد میکنیم.
این مثال شامل صفحه (Login.aspx) که در این صفحه کاربر لاگین میکند و صفحه (Home.aspx) که اگر لاگین با موفقیت انجام شود به این صفحه redirect میشود.
صفحه Login :
در این صفحه اتفاق های زیر خواهد افتاد :
1- اعتبارسنجی کاربر با استفاده از نام کاربری و رمز ورود.
2-اطمینان از آن که کاربر حساب کاربری فعال دارد.
صفحه HTML :
این صفحه شامل کنترل های صفحه ی لاگین برای رویداد اعتبار سنجی میباشد.
<form id="form1" runat="server"> <asp:Login ID = "Login1" runat = "server" OnAuthenticate= "ValidateUser"></asp:Login> </form
NameSpace ها :
شما نیاز به وارد کردن NameSpace های زیر در داخل پروژه دارید :
using System.Data; using System.Configuration; using System.Data.SqlClient; using System.Web.Security;
Stored Procedure برای صحت اعتبار کاربر :
Stored Procedure برای این استفاده میشود که در ابتدا بررسی میکند که نام کاربری و رمز ورود به درستی وارد شده است یا خیر که در صورت درست بودن 1- را بازمیگرداند.
اگر نام کاربری و رمز ورود صحیح باشد اما حساب کاربری فعال نباشد 2- را بازمیگرداند.
اگر نام کاربری و رمز ورود صحیح باشد و حساب کاربری کاربر فعال باشد 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
اعتبارسنجی کاربر :
رویداد زیر هنگامی که دکمه login کلیک شود فراخوانی میشود.
در اینجا کاربر رمز ورود و نام کاربری خود را وارد میکند که داخل stored preocedure میشود که از آن مقدار هایی به این رویداد ارسال میشود که اگر :
1- بازگردد پیام "نام کاربری و رمز ورود صحیح است" نشان داده میشود.
2- بازگردد پیام "حساب کاربری فعال نیست" نشان داده میشود.
که با استفاده از متد FormsAuthentication RedirectFromLoginPage کاربر را به صفحه Home میفرستد.
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 :
این صفحه دارای یک کنترل برای نمایش دادن نام کاربر لاگین شده است.
<div> Welcome <asp:LoginName ID="LoginName1" runat="server" Font-Bold = "true" /> <br /> <br /> <asp:LoginStatus ID="LoginStatus1" runat="server" /> </div>
شا نیاز به وارد کردن nameSpace زیر دارید :
using System.Web.Security;
فرستادن کاربر به صفحه لاگین در صورت لاگین نبودن :
در رویداد PageLoad با استفاده از خصوصیت IsAuthenticated بررسی میکنیم که کاربر لاگین شده است یا خیر. که اگر کاربر لاگین نبوده باشد به صفحه ی لاگین فرستاده میشود.
protected void Page_Load(object sender, EventArgs e) { if (!this.Page.User.Identity.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } }
تنظیمات webConfig :
شما نیاز به وارد کردن کد زیر در <system.web> میباشید.
<authentication mode="Forms"> <forms defaultUrl="~/Home.aspx" loginUrl="~/Login.aspx" slidingExpiration="true" timeout="2880"></forms> </authentication>
- ASP.net
- 2k بازدید
- 10 تشکر