نمایش نتایج 1 تا 4 از 4

نام تاپیک: مدیریت دسترسی کاربرها به صفحات در asp.net web form

  1. #1

    مدیریت دسترسی کاربرها به صفحات در asp.net web form

    سلام.
    من توی پروژه ام از فرم های لاگین asp استفاده نکردم و فرم ها رو خودم طراحی کردم.
    توی دیتابیس یوزر ها برای هر یوزر نقش دسترسی قرار دادم(مثل admin-manager- ...).
    در حال حاظر برای دسترسی به صفحات، توی هر صفحه بررسی میکنم که نقش کاربر رو از دیتابیس بخونه و اجازه به اون صفحه رو بده یا نده.

    با توجه به تعداد زیاد صفحات، میخوام این کار رو به صورت یکپارچه انجام بدم. مثلا توی web.config
    میدونم که با <authorization> و role در web.config میشه این کار رو کرد، ولی همانطور که گفتم من از دیتابیس های پیش فرض asp استفاده نکردم.
    ممنون میشم راهنمایی کنید چطور این کارو بکنم. یا اگر روش دیگه ای هم باشه ممنون میشم بگید.

    با تشکر.

  2. #2
    کاربر دائمی آواتار BookWorm
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    103

    نقل قول: مدیریت دسترسی کاربرها به صفحات در asp.net web form

    باسلام. دوست عزیز شما ابتدا باید جداول زیر رو با این مشخصات تشکیل بدید.
    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
    {

    }
    }

    موفق باشید.

  3. #3

    نقل قول: مدیریت دسترسی کاربرها به صفحات در asp.net web form

    نقل قول نوشته شده توسط BookWorm مشاهده تاپیک
    باسلام. دوست عزیز شما ابتدا باید جداول زیر رو با این مشخصات تشکیل بدید.
    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
    {

    }
    }

    موفق باشید.
    ممنون دوست عزیز ، ولی شما خیلی سخت کردید کار رو
    من با یه جدول کاربر ها این کار رو انجام دادم.
    راهش خیلی ساده تر از اونی بود که فکر می کردم، فقط لازم بود کد های بررسی رو به جای هر صفحه توی مستر پیج بزارم.
    نمیدونم چرا حواسم نبود

  4. #4
    کاربر دائمی آواتار BookWorm
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    103

    نقل قول: مدیریت دسترسی کاربرها به صفحات در asp.net web form

    نقل قول نوشته شده توسط mohammad-i مشاهده تاپیک
    ممنون دوست عزیز ، ولی شما خیلی سخت کردید کار رو
    من با یه جدول کاربر ها این کار رو انجام دادم.
    راهش خیلی ساده تر از اونی بود که فکر می کردم، فقط لازم بود کد های بررسی رو به جای هر صفحه توی مستر پیج بزارم.
    نمیدونم چرا حواسم نبود
    دوست عزیز سخت کار نشده بلکه شما با اون روش فقط خودتون رو راحت کردید. برای دسترسی هر کاربر دوباره باید همه دسترسی های مربوط به صفحات رو بهش بدید. ولی با این کار شما افراد عضو یک گروه رو تنها یکبار دسترسی میدهید.

تاپیک های مشابه

  1. نحوه بدست آوردن PageRank در ASP.NET WEB FORMS
    نوشته شده توسط uthman در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: جمعه 28 شهریور 1393, 17:28 عصر
  2. سوال: ساخت compare validation با data annotation در asp.net web form
    نوشته شده توسط Eslami_83 در بخش مقالات مرتبط با Microsoft .Net Framework
    پاسخ: 2
    آخرین پست: دوشنبه 05 تیر 1391, 23:05 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •