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

نام تاپیک: جلوگیری از دسترسی کاربران به برخی پوشه ها

  1. #1

    Question جلوگیری از دسترسی کاربران به برخی پوشه ها

    سلام خدمت دوستان و اساتید محترم.
    سوال من اینه که در asp.net چطور میشه جلوی دسترسی کاربران به برخی پوشه ها و فایلهای داخل اون رو گرفت تا از طریق url یا سایر روشها محتویات اون پوشه رو نتونن ببینند؟
    اگه برای اینکار کد خاصی لازمه ممنون میشم که کد رو هم بزارید.

  2. #2

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    شما ميتونيد با استفاده از web.config اينكارو بكنيد.به اين شكل كه فولدري كه ميخوايد فقط كاربراي خاصي ببينن يك web.config قرار ميدي و بعد كد زير اضافه ميكني و با استفاده از رولهايي كه قبلا تعريف كردي دسترسي به اون پوشه رو فقط براي مثال براي رول admin باز ميذاري




    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <system.web>

    <authorization>
    <allow roles="Admin" />
    <deny users="?" />
    </authorization>
    </system.web>


    </configuration>



    موفق باشيد

  3. #3

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    خیلی ممنون. فقط یه مشکلی که هست اینه که من از asp.net configuration استفاده نکردم و بخش user managment رو خودم نوشتم. بنابراین رول تعریف نکردم. در این صورت آیا بازهم میشه از روش فوق استفاه کرد ؟

  4. #4
    کاربر دائمی آواتار LostOfMind
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    گیلان -آستانه اشرفیه
    پست
    315

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    خوب باید دید مدیریت کاربران رو چطور نوشتی!!

  5. #5
    کاربر دائمی آواتار keiv@n
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    local
    پست
    417

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    سلام

    بخش user management رو هم خودت نوشته باشی باید یه ستون role داخل پایگاه دادت اضافه کرده باشی!

    اگر کلا می خوای دسترسی کاربرای غیر عضو رو به صفحات مشخصی قطع کنی می تونی داخل page_load اون صفحات بنویسی :




    protected void Page_Load(object sender, EventArgs e)
    {
    if (!HttpContext.Current.User.Identity.IsAuthenticate d)
    {
    Response.Redirect("Default.aspx");
    }
    }


  6. #6

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    خیلی ممنون. من یه جدول بنام user دارم که اطلاعات کاربران داخلش قرار داره. اونجا یه فیلد به نام userKindId دارم که از طریق کلید خارجی به جدول دیگه ای بنام UserKind وصل میشه.
    داخل جدول UserKind نوع کاربران مشخص میشه که ممکنه admin ,user,... باشند. وقتی که یک کاربر Login میکنه از طریق session تأیید میشه :
    Session["Logged"] = "true";

    در هنگام ورود به صفحات هم همین شرط چک میشه :
    if (Session["Logged"].ToString() != "true")
    {
    Response.Redirect("~/Login.aspx");
    }
    حالا چند سوال :
    1 - آیا این روش امنیت لازم رو داره ؟
    2 - چطور HttpContext.Current.User.Identity.IsAuthenticated رو برای کاربر مورد نظر True کنم ؟
    3 - می خوام کاربران معمولی به صفحات مخصوص به admin دسترسی نداشته باشند.
    4 - سوال اول تاپیک : چطور جلو دسترسی به پوشه های مربوط به admin رو بگیرم ؟

  7. #7
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها




  8. #8
    کاربر دائمی آواتار keiv@n
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    local
    پست
    417

    نقل قول: جلوگیری از دسترسی کاربران به برخی پوشه ها

    سلام

    اینطوری عمل کنید :

    اگر کاربر شما با موفقیت login کرده باشد آنگاه یک authentication ticket برای او در نظر بگیرید به صورت زیر (این دستور باید دقیقا پس از دستورات login نوشته شود و چک شود که در صورتی که login با موفقیت انجام شده باشد .) :


    FormsAuthentication.SetAuthCookie(username,false);


    بعد ها از این کوکی استفاده خواهیم کرد ...

    چون ما از forms authentication استفاده می کنیم پس باید بدانیم که Asp.Net Framework آبجکت IPrinciple را جهت اهراز هویت کاربران چک خواهد کرد

    ID , Role داخل این آبجکت تعیین کننده دسترسی و یا عدم دسترسی کاربر به صفحات وب خواهد بود و تا کنون ما کدی در ارتباط با این آبجکت ننوشته ایم !

    میشه گفت که formsauthentication از این کاربر بی خبر است !

    پس در این مرحله برای رفع این مشکل باید با override کردن متد FormsAuthentication_OnAuthenticate داخل فایل global.asax شناسایی کاربر به formsauthentication را میسر کنیم .


    protected void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs e)
    {
    if (FormsAuthentication.CookiesSupported == true)
    {
    if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
    {
    try
    {
    string userName = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;
    string roles = mydb.getUserRoles(userName);
    e.User = new System.Security.Principal.GenericPrincipal(new System.Security.Principal.GenericIdentity(userName , "Forms"), roles.Split(','));
    }
    catch (Exception ex)
    {

    }
    }
    }
    }


    خوب چن تا مطلب در مورد کد بالا بگم دوتا دستور if اول که تنظیمات authentication و قابلیت هاشونو چک می کنند

    اگر شرط ها درست باشن داخل بلوک try میشیم :
    دستورات :
    string userName = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;
    string roles = dbHelper.getUserRoles(userName);

    نام کاربری و role کاربر را در متغییر های username , roles ذخیره می کنند .
    دستور :
    e.User = new System.Security.Principal.GenericPrincipal(new System.Security.Principal.GenericIdentity(userName  , "Forms"), roles.Split(','));

    میاد principal مورد نظرمونو واسه کاربر رایج می سازه پس الان می تونیم این کاربرو به راحتی authorize کنیم یعنی درمورد دسترسیش به صفحات وب تصمیم گیری کنیم .

    درضمن چون من چندین role برای کاربرا درنظر گرفتم از متد split() برای جداسازی استفاده کردم تا role هامو جدا کنم

    مثلا یه کاربر می تونه هم زمان هم ادمین باشه هم مدیر به این شکل username:admin, roles=admin;manager

    همه چی انجام شد

    در مرحله آخر میریم داخل فایل وب کانفیگ پوشه ای که صفحات ادمین داخلش هست و اجازه دسترسی رو به صورت زیر تعیین می کنیم :

    <authorization> 
    <allow roles="admin" />
    <deny users="*" />
    </authorization>


    امیدوارم استفاده لازم رو برده باشی

    موفق باشی

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

  1. جلوگیری از دسترسی کاربران به دایرکتوری های موجود
    نوشته شده توسط persian_farvahar در بخش PHP
    پاسخ: 4
    آخرین پست: سه شنبه 25 مرداد 1390, 05:04 صبح
  2. سوال: جلوگیری از دسترسی کاربران به رمز sa
    نوشته شده توسط fa_karoon در بخش SQL Server
    پاسخ: 2
    آخرین پست: شنبه 06 آذر 1389, 08:27 صبح
  3. سوال: جلوگیری از دسترسی به درایوها و پوشه های خاص
    نوشته شده توسط nahid1388 در بخش شبکه و Networking‌
    پاسخ: 15
    آخرین پست: شنبه 23 آبان 1388, 17:27 عصر
  4. عدم دسترسی کاربران به یک پوشه
    نوشته شده توسط m110_110 در بخش C#‎‎
    پاسخ: 6
    آخرین پست: یک شنبه 23 فروردین 1388, 19:52 عصر
  5. جلوگیری از دسترسی کاربران به بانک
    نوشته شده توسط kianian در بخش سایر پایگاه‌های داده
    پاسخ: 2
    آخرین پست: یک شنبه 02 دی 1386, 12:35 عصر

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

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