بررسی ورود کاربر در Asp.net
سه شنبه 19 مرداد 1395در این مقاله با استفاده از سی شارپ، یک فرم ورود ساده که با استفاده از Forms Authentication ساخته شده، ورود کاربر را از پایگاه داده تایید می کند، طراحی میکنیم و اگر کاربر تایید شده باشد، میتواند وارد شود و اگر نشده باشد به صفحه ورود فرستاده می شود.
پایگاه داده
با استفاده از همان کاربرانی که ثبت نام کرده اند این جدول را ایجاد کرده ایم.
در این برنامه دو صفحه ایجاد میکنیم که یکی از آن ها صفحه Login.aspx است که کاربر با استفاده از آن میتواند وارد صفحه دوم یعنی Home.aspx شود.
صفحه Login
این صفحه کاربر را از فعال بودن حساب کاربری مطلع می کند وبا بررسی و تایید نام کاربری و رمز عبور به آن اجازه ورود به صفحه را می دهد.
HTML
کد های html این صفحه شامل یک کنترل Asp.net و یک رویداد OnAuthenticate می باشد.
<form id="form1" runat="server"> <asp:Login ID = "Login1" runat = "server" OnAuthenticate= "ValidateUser"></asp:Login> </form
Namespaces های مورد نیاز
using System.Data; using System.Configuration; using System.Data.SqlClient; using System.Web.Security;
Stored Procedure برای اعتبارسنجی
Stored Procedure برای اعتبارسنجی برای اولین بار چک میکند که آیا نام کاربری و رمز عبور صحیح است و اگر صحیح بود -1 را return میکند.اگر نام کاربری و رمز عبور صحیح باشد ولی کاربر فعال نباشد -2 را return می کند.اگر نام کاربری و رمز عبور درست باشد و حساب کاربر هم فعال شده باشد پس از آن 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
اعتبار سنجی هویت کاربر
وقتی شما بر روی دکمه Log In کلیک می کنید. نام کاربری و پسورد وارد شده و توسط stored procedure ارسال می شود و اگر مقدار آن -1 باشد، رمز عبور اشتباه است و اگر -2 باشد، حساب کاربری فعال نشده و پس از آن صفحه با روش FormsAuthentication RedirectFromLoginPage کاربر را به صفحه اصلی هدایت می شود.
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
کد هایHtml این صفحه شامل کنترل LoginName برای نمایش نام کاربر است و LoginStatus برای خروج کاربر است.
Namespaces های مورد نیاز
using System.Web.Security;
هدایت کاربر به صفحه ورود در صورتی که عضو نباشد.
در داخل این رویداد لود صفحه ابتدا بررسی میشود که کاربر IsAuthenticated باشد در غیر این صورت RedirectToLoginPage اجرا نمی شود و کاربر در همان صفحه می ماند.
protected void Page_Load(object sender, EventArgs e) { if (!this.Page.User.Identity.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } }
پیکربندی Web.Config
شما باید کد های زیر در <<system.web وارد کنید.
<authentication mode="Forms"><forms defaultUrl="~/Home.aspx" loginUrl="~/Login.aspx" slidingExpiration="true" timeout="2880"></forms> </authentication>
- ASP.net
- 4k بازدید
- 8 تشکر