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

نام تاپیک: logout شدن با درخواست post یا درخواست Get ؟

  1. #1

    logout شدن با درخواست post یا درخواست Get ؟

    سلام دوستان
    توی مقاله ای خوندم که جهت logout شدن از اکانت , به جای درخواست Get درخواست Post را به سرور ارسال کنید.
    از دوستان کسی اطلاعی در این زمینه داره که آیا چنین مطلبی صحت داره یا نه و اگر صحت داره دلیلش چیه؟

  2. #2
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: logout شدن با درخواست post یا درخواست Get ؟

    دلیلش اینه که کار رو برای اسکریپت هایی که به صورت اتفاقی ممکنه با ارسال دستور Get به آدرس /Account/Logout ممکنه کاربر رو از حساب کاربری خارج کنند سخت تر بشه.

  3. #3

    نقل قول: logout شدن با درخواست post یا درخواست Get ؟

    ممنون و متشکر

  4. #4
    کاربر جدید
    تاریخ عضویت
    بهمن 1398
    محل زندگی
    Tehran
    پست
    10

    نقل قول: logout شدن با درخواست post یا درخواست Get ؟

    سلام:
    دلیل آن واضح است. مرورگرها می توانند از حافظه پنهان استفاده کنند ، یا حتی می توانند URL های نوع GET را می توانند به قول معروف Pre-Fetch کنند یعنی از قبل دریافت کنند(و بسیاری از مرورگرهای مدرن نیز همین کار را انجام می دهند). اگر شما نمی خواهید مرورگر به طور اتفاقی شما را از مکانی که هستید خارج کند باید یادآور کنم که می تونید از نوع post استفاده کنید چرا که دیگر مرورگر نمی تواند به URL های از نوع پست به راحتی دسترسی داشته باشد چون که پیوندهایی هستند که می تواند با Javascript در ارتباط باشد.
    مسئله مهمتر اینه که اگر متد شما برای logoff از نوع get باشه پس هر داده ی پست شده از طرف یوزر می تونه شما رو از سیستم خارج کنه! مثال عرض می کنم خدمتتون:
    فرض کنید شما فرومی در سایت خودتون دارید:
    به شما این امکان را دادند که بتونید تصاویر را پست کنید. حالا فرض کنید یه کاربری میاد و تصویری را به به نشانی http://url-to-log-off-the-site ارسال می کنه این کار می تونه خیلی راحت سایت شما را به هم بریزه چون شما نمی تونید صفحه ای را مشاهده کنید تا بتونی حذفش کنی تا شما را از سیستم خارج نکنه!
    معمولا هم از فرم فیلد Anti-forgery token استفاده می کنن که به صورت GET انکود (encode) میشه. که در این صورت شما دیگه نیازی نیست در روش Post این کار رو انجام بدید.

    در asp.net core این کار خیلی رعایت شده و از httppost برای لاگین و رجیستر و حتی لاگ آف استفاده میشه.
    [Route("Register")]
    public IActionResult Register()
    {
    return View();
    }


    [HttpPost]
    [Route("Register")]
    public IActionResult Register(RegisterViewModel register,IFormCollection form)
    {
    ...
    return View();
    }

    برای لاگ اف هم داریم:

    public class LogoutController : Controller{
    [HttpPost]
    public async Task<IActionResult> Logout()
    {
    // SomeOtherPage is where we redirect to after signout
    await HttpContext.SignOutAsync(CookieAuthenticationDefau lts.AuthenticationScheme);
    HttpContext.Response.Cookies.Delete($".AspNetCore. {CookieAuthenticationDefaults.AuthenticationScheme }");
    return Redirect("/");
    }
    }
    آخرین ویرایش به وسیله magicmilkom : چهارشنبه 30 بهمن 1398 در 00:35 صبح

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

  1. مشکل با ارسال درخواست POST به سرور
    نوشته شده توسط n0o0b_sina در بخش Android Studio
    پاسخ: 5
    آخرین پست: یک شنبه 10 اسفند 1393, 09:01 صبح
  2. مشکل با ارسال درخواست POST به سرور
    نوشته شده توسط n0o0b_sina در بخش برنامه‌نویسی جاوا
    پاسخ: 5
    آخرین پست: یک شنبه 03 اسفند 1393, 16:50 عصر
  3. آموزش: درست کردن دکمه Logout
    نوشته شده توسط General-Xenon در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: شنبه 22 اسفند 1388, 15:25 عصر
  4. سوال: چرا متد Post درست عمل نمی كنه؟
    نوشته شده توسط WorldVbMan در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: چهارشنبه 07 اسفند 1387, 18:33 عصر
  5. سوال: در خواست مثالی کامل برای login و logout توسط session ها
    نوشته شده توسط ahmadbadpey در بخش PHP
    پاسخ: 13
    آخرین پست: چهارشنبه 10 مهر 1387, 14:25 عصر

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

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