باسلام. دوست عزیز شما ابتدا باید جداول زیر رو با این مشخصات تشکیل بدید.
1. جدول کاربران: شماره،نام کاربری،رمزعبور،شماره گروه کاربر،وضعیت
2. جدول گروه های کاربری: شماره، نام گروه
3. جدول صفحات سایت: شماره،نام فارسی صفحه،نام لاتین صفحه
4. جدول دسترسی گروه ها به صفحات: شماره،شماره صفحه،شماره کاربر،وضعیت دسترسی
منظور از فیلد "شماره گروه کاربری" همان فیلد کلید خارجی از جدول گروه کاربری هست و به همین ترتیب در جدول دسترسی گروه ها به صفحات نیز همینطور است.
هم اکنون صفحه accessdenied را نیز بسازید و در جدول صفحات وارد نکنید. همچنین صفحه ای برای حق دسترسی دادن به گروه های کاربری در صفحات بسازید.
حال باید در کد صفحه masterpage این کدها رو نوشت. با خواندن کدها خودتون میتونید تغییرات مورد نیاز رو اعمال کنید.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["User_ID_"] == null)
Response.Redirect("~/Manage/Login.aspx");
else
{
Lbl_UserFLName.Text = Session["User_FLName"].ToString();
Lbl_UserGroup.Text = Session["User_Group"].ToString();
}
if (!IsPostBack)
{
Sub_SetData();
}
Sub_CheckPageAccess();
}
private void Sub_SetData()
{
Sub_SetAccess();
}
public void Sub_SetAccess()
{
try
{
DataTable SqlDT = new DataTable();
ClsMain.Sub_SetDB();
ClsMain.SqlDA.SelectCommand.CommandType = CommandType.Text;
ClsMain.SqlDA.SelectCommand.CommandText = @"SELECT TblUser_Page.Page_NameFa, TblUser_Page.Page_NameEn,
TblUser_Access.Access_Select, TblUser_Access.Access_Insert, TblUser_Access.Access_Update, TblUser_Access.Access_Delete
FROM TblUser_Access INNER JOIN TblUser_Page ON TblUser_Access.Access_Page_ID = TblUser_Page.Page_ID_
WHERE (TblUser_Access.Access_Group_ID = @Access_Group_ID) AND (TblUser_Page.Page_Status = 1) AND (TblUser_Page.Page_PID > 0)";
ClsMain.SqlDA.SelectCommand.Parameters.Add("@Acces s_Group_ID", SqlDbType.Int).Value = Session["User_Group_ID"];
ClsMain.SqlDA.SelectCommand.ExecuteNonQuery();
ClsMain.SqlDA.Fill(SqlDT);
GridView_Access.DataSource = SqlDT;
GridView_Access.DataBind();
for (int Indx = 0; Indx <= SqlDT.Rows.Count - 1; Indx++)
Session["Page_" + SqlDT.Rows[Indx][1].ToString()] = SqlDT.Rows[Indx][2].ToString().PadRight(5, ' ') + SqlDT.Rows[Indx][3].ToString().PadRight(5, ' ') + SqlDT.Rows[Indx][4].ToString().PadRight(5, ' ') + SqlDT.Rows[Indx][5].ToString().PadRight(5, ' ');
}
catch (Exception Exp)
{
ClsMain.Sub_MesssageBox(this.Page, Exp.Message);
}
}
public void Sub_CheckPageAccess()
{
if (HttpContext.Current.Request.Url.AbsolutePath.Repl ace("/Manage/", "") != "Default.aspx")
if (HttpContext.Current.Request.Url.AbsolutePath.Repl ace("/Manage/", "") != "AccessDenied.aspx")
if (Session["Page_" + HttpContext.Current.Request.Url.AbsolutePath.Repla ce("/Manage/", "")].ToString().Substring(0, 5).Trim() == "False")
Response.Redirect("~/Manage/AccessDenied.aspx");
else
{
}
}
موفق باشید.