سطح دسترسی در authentication
با سلام به دوستان
من دربرنامه برای ورود کاربران از authentication استفاده میکنم
حالا میخوام در برنامه سطح دسترسی ایجاد کنم باید چه کنم
زمانی که مدیر میخواد وارد سایت بشه چیکار کنم
کد authentication در کانفیگ
<
authenticationmode="Forms">
<formsname="logincookie"loginUrl="Default.aspx"timeout="20"defaultUrl="home_page.aspx"></forms>
</authentication>
<authorization>
این کد هم برای تشخیص هویت
Private Function IsUser() As Boolean
Try
Dim com As New SqlCommand
com.Connection = con
com.CommandText = "Select Count(*) From register Where user_name=@user_name And pass=@pass"
com.Parameters.AddWithValue("@user_name", txt_user.Text)
com.Parameters.AddWithValue("@pass", txt_pass.Text)
con.Open()
If com.ExecuteScalar = 1 Then
Return True
End If
con.Close()
Catch ex As Exception
End Try
End Function
Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click
If IsUser() Then
FormsAuthentication.SetAuthCookie(txt_user.Text, True)
FormsAuthentication.RedirectFromLoginPage(txt_pass .Text, True)
Session("user") = Trim(txt_user.Text)
Session("pass") = Trim(txt_pass.Text)
Label4.Visible = False
Else
txt_user.Text = ""
txt_pass.Text = ""
lbl.Visible = True
txt_user.Focus()
End If
End Sub
برای ورود به پنل کاربری مدیر باید چیکار کرد
نقل قول: سطح دسترسی در authentication
موضوع مورد نیاز منم هست. اساتید راهنمایی کنن.
نقل قول: سطح دسترسی در authentication
شما یک کلاس جدید درست کنید که از کلاس roleprovider ارث ببره. حالا در متد getrolesForUsers مقدار role ای که خودتون ساخته اید return کنید.
در web.config سایتتونم باید این کلاس رو معرفی کنید
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear />
<add name="MyRoleProvider" type="YourClassUrl"/>
</providers>
</roleManager>
خوب دیگه حالا .net می تونه role های ایجاد شده توسط شما رو بشناسه و در هر فولدری می تونید web.config بزارید و مجوز دسترسی به رولهاتون رو بدید.
نقل قول: سطح دسترسی در authentication
سلام بیسار ممنون زحمت کشید جواب دادید
ببخشید این سوال مبتدی رو میکنم
roleprovider و roleManager جی هستند میشه توضیح بدید
نقل قول: سطح دسترسی در authentication
RoleProvider که از کلاسهای خود دات نت هست و در namespace -> System.Web.Security; قرار دارد. کار این کلاس کارهایی مانند ساخت و حذف رول و دادن نقش به کاربر و از اینجور کارها است. بعد از اینکه کلاستون را ساختیدpublic class YourClass:RoleProvider
خودش متد ها را براتون میاره . از اسم متد هاش میشه بقیه وظایفش رو فهمید.
در rolemanager که باید در system.web قرارش بدید شما این امکان را ایجاد می کنید که .net از provider شما استفاده کند <roleManager enabled="true"
. شما یک provider خودتون به rolemanager معرفی می کنید. defaultProvider="MyRoleProvider"
و بعد اون رو ایجاد و و در type هم مسیری که کلاس شما در آن وجود دارد را می نویسید <providers>
<clear />
<add name="MyRoleProvider" type="YourClassUrl"/>
</providers>
نقل قول: سطح دسترسی در authentication
سلام
خوب من کد لاگین کاربر رو به صورت دستی انجام دادم
اونوقت میشه من RoleProvider میشه در برنامه استفاده کرده
نقل قول: سطح دسترسی در authentication
بله . فقط کافی است رول کاربری که لاگین کرده است را در متد getrolesForUsers در کلاس که ایجاد کرده اید return کنید + در web.config که در فولدر مدریت دارید به آن رول مجوز ورود داده باشید.
نقل قول: سطح دسترسی در authentication
سلام ممنون
حالا این کلاسی که میگید توش باید چی نوشت
تا حالا این کار نکردم بلد نیستم
نقل قول: سطح دسترسی در authentication
سلام.
اول شما این namesapace رو به کلاستون اضافه می کنید.
using System.Web.Security;
بعد طبق کد زیر کلاستون از کلاس RoleProvider ارث می بره
public class Class1:RoleProvider
چون کلاس RoleProvider به صورت abstract می باشد ماوس را روی RoleProvider بزارید تا گزینه
implement abstract class roleProvder نمایان شود و سپس با روی آن گزینه کلیک می کنید.
حالا تو متد GetRolesForUser
public override string[] GetRolesForUser(string username)
مقدار role کاربرتون رو باید return کنید. قبلش کدهای داخل متد رو پاک کنید . و توجه داشته باشید که مقدار ارسالی از نوع string[] است. پس شما ارایه ای از نوع استرینگ با یک خانه ایجاد کنید.
string[] Role = new string[1];
و مقدار رولی که از دیتابیس میخونی رو داخل Role[0[ میریزی و در نهایت return Role میکنی.