اهراز هویت و مدیریت نقش ها در ASP.Net
دوشنبه 25 فروردین 1393در این مقاله قصد داریم اهراز هویت و مدیریت کاربران را توسط ابزارهای موجود در ToolBox و MemberShip پیاده سازی کنیم

سلام دوستان
مرحله اول پیاده سازی و راه اندازی RoleProvider و MemberShip
ویژوال استادیو را باز کرده و یک پروژه جدید ایجاد کنید
در ابتدا باید بانک اطلاعاتی مربوط به کاربران و مدیریت نقش ها ساخته شود
وارد Visual Studio Tools شوید و Visual Studio Command Prompt را اجرا کنید
عبارت aspnet_regsql.exe را تایپ کنید و Enter را بزنید
Setup Wizaed باز خواهد شد
مرحله اول :
Next را کلیک کنید
مرحله بعدی :
اطلاعات مربوط به Sql را وارد کنید و کلیک Next را بزنید
مراحل بعدی کلید Next را فشار دهید تا گزینه Finish ظاهر شود
بانک اطلاعاتی مربوطه ساخته شد
قسمت بعدی تنظیمات FormsAuthentication است
تگ زیر را در وب کانفیگ قرار دهید
<authentication mode="Forms"> <forms cookieless="UseCookies" defaultUrl="Default.aspx" loginUrl="Login.aspx" protection="All" timeout="30"> </forms> </authentication>
قسمت بعدی تنظیمات Membership Provider اس
<membership defaultProvider="Demo_MemberShipProvider"> <providers> <add name="Demo_MemberShipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="cnn" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""> </providers> </membership>
و قسمت بعدی تنظیمات Role Provider مدیریت نقش ها
<roleManager enabled="true" cacheRolesInCookie="true" cookieName="TBHROLES" defaultProvider="Demo_RoleProvider"> <providers> <add connectionStringName="dld_connectionstring" applicationName="/" name="Demo_RoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </providers> </roleManager>
در صفحه ثبت نام یک کنترل CreateUserWizard قرار دهید
در رویداد CreateUserWizard1_CreatedUser کدهای ثبت کاربر را مینویسیم
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) { MembershipCreateStatus p = MembershipCreateStatus.Success; Membership.CreateUser(CreateUserWizard1.UserName, CreateUserWizard1.Password, CreateUserWizard1.Email, CreateUserWizard1.Question, CreateUserWizard1.Answer, true, out p); } protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e) { Response.Redirect("login.aspx"); }
سپس در صفحه ای با نام Login یک کنترل Login قرار میدهیم و کد های آن به شرح زیر است
protected void Login1_Authenticate(object sender,AuthenticateEventArgs e) { if (Membership.ValidateUser(Login1.UserName, Login1.Password) == true) { Login1.Visible = true; Session["user"] = User.Identity.Name; FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true); } else { Response.Write("Invalid Login"); } }
برای مدیریت نقش ها صفحه به شکل زیر درست کرده و کدهارا در آن قرار میدهیم
Public void createRoles() { try { if (!Roles.RoleExists(txtrolename.Text)) { Roles.CreateRole(txtrolename.Text); BindUsers(); BindRoles(); Label1.Text = "Role(s) Created Successfully"; } else { Label1.Text = "Role(s) Already Exists"; } } catch (Exception ex) { Label1.Text = ex.Message; } }
public void BindRoles() { SqlDataAdapter da = new SqlDataAdapter("select RoleName from aspnet_Roles", cnn); DataSet ds = new DataSet(); da.Fill(ds, "Roles"); lstRoles.DataSource = ds; lstRoles.DataTextField = "RoleName"; lstRoles.DataValueField = "RoleName"; lstRoles.DataBind(); }
برای نمایش کاربران هم کدهای زیر استفاده میشود
public void BindUsers() { SqlDataAdapter da = new SqlDataAdapter("select UserName from aspnet_users", cnn); DataSet ds = new DataSet(); da.Fill(ds, "Roles"); lstusers.DataSource = ds; lstusers.DataTextField = "UserName"; lstRoles.DataValueField = "RoleName"; lstusers.DataBind(); }
برای نسبت دادن نقشی به کاربر :
private void AssignRoles() { try { if (!Roles.IsUserInRole(lstRoles.SelectedItem.Text)) { Roles.AddUserToRole(lstusers.SelectedItem.Text, lstRoles.SelectedItem.Text); BindUsers(); BindRoles(); Label1.Text = "User Assigned To User Successfully"; } else { Label1.Text = "Role(s) Already Assigned To User"; } } catch (Exception ex) { Label1.Text = ex.Message; } }
حذف نقش از کاربر :
private void RemoveuserFromRole() { try { Roles.RemoveUserFromRole(lstusers.SelectedItem.Text, lstRoles.SelectedItem.Text); BindUsers(); BindRoles(); Label1.Text = "User Is Removed From The Role Successfully"; } catch (Exception ex) { Label1.Text = ex.Message; } }
حذف نقش :
public void RemoveRole() { try { Roles.DeleteRole(lstRoles.SelectedItem.Text); BindUsers(); BindRoles(); Label1.Text = "Role(s) Removed Successfully"; } catch (Exception ex) { Label1.Text = ex.Message; } }
و برای اهراز هویت و دسرترسی کاربران در فولدر مورد نظر یک وب کانفیگ قرار داده و کد زیر را در آن درج میکنیم
<authorization <allow roles ="Admin"/> <deny users ="*"/> </authorization>
این دستور فقط به کاربرانی که نقش Admin دارند اجازه ورود میده
نمونه هم ضمیمه شده
موفق باشید
- ASP.net
- 8k بازدید
- 9 تشکر