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

نام تاپیک: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

  1. #1

    Question نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    درود ,
    دوتا سوال در مورد Identity 2 :

    1 - چطوری میشه یک کاربر رو غیر فعال یا بلاک کرد که نتونه دیگه به سایت وارد بشه و اگر هم تو سایت باشه آنی Logout بشه ؟
    تو StackOverFlaow چند مورد رو تست کردم ولی جواب نگرفتم - فیلد IsEnabled رو هم به جدول کاربران اضافه کردم که در پایین میبینید- اگه امکان داره یکم به زبان شیرین فارسی توضیح بدید.



    2 -چطور میشه فهمید که چه کاربری آنلاینه و چه کاربری آفلاین ؟


    فیلد های زیر کاربردشون چیه ؟

  2. #2

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    1- 2 فیلد LockoutEndDateUtc و LockoutEnabled برای همین ساخته شده و نیازی به فیلد اضافه IsEnabled نیست .

    کد کنترلر برای Ban و UnBan کردن یک کاربر که ورودی userid کاربر رو میگیره :


    public async Task<ActionResult> LockAccount([Bind(Include = "Id")] string id)
    {
    await UserManager.ResetAccessFailedCountAsync(id);
    await UserManager.SetLockoutEndDateAsync(id, DateTime.UtcNow.AddYears(100));
    return RedirectToAction("Index");
    }


    public async Task<ActionResult> UnlockAccount([Bind(Include = "Id")] string id)
    {
    await UserManager.ResetAccessFailedCountAsync(id);
    await UserManager.SetLockoutEndDateAsync(id, DateTime.UtcNow.AddYears(-1));
    return RedirectToAction("Index");
    }


    کد ویو :

    @*Unlocked*@
    @if (Model.LockoutEnabled && (Model.LockoutEndDateUtc <= DateTime.Now || Model.LockoutEndDateUtc == null))
    {
    <div class="col-md-10">
    <p class="form-control-static">Active</p>
    </div><br /><br /><br />


    <div class="col-md-offset-2">
    @using (Html.BeginForm("LockAccount", "ApplicationUsers", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()
    @Html.HiddenFor(model => model.Id)
    <input type="submit" value="Ban User" class="btn btn-danger" />
    }
    </div><br /><br />
    }


    @*Locked*@
    @if (Model.LockoutEnabled && (Model.LockoutEndDateUtc > DateTime.Now))
    {
    <div class="col-md-10">
    <p class="form-control-static">
    <span>@Model.LockoutEndDateUtc</span>
    <span dir="rtl"> Banned till </span>
    </p>
    </div><br /><br />


    <div class="col-md-offset-2">
    @using (Html.BeginForm("UnlockAccount", "ApplicationUsers", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()
    @Html.HiddenFor(model => model.Id)
    <input type="submit" value="Unban User" class="btn btn-success" />
    }
    </div><br /><br />
    }


    2- برای اینکه بفهمید یک کاربر آنلاین شده ، باید از Application_Start و Application_End در Global.Asax استفاده کنید .
    وقت کاربر لاگین کرد ، UserId اش رو بگیرید و در Start وضعیتش رو به آنلاین تغییر بدید ( یک Property جدید باید برای آنلاین بود کاربر تعریف کنید ) و در Application_End این Property رو False به معنی آفلاین تغییر بدید .

    روش های دیگه ای هم برای انجام این کار هست :
    https://stackoverflow.com/a/23379616
    https://www.codeproject.com/Articles...embers-Using-A

  3. #3

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    آقای تاجیک میخوام اگر کاربر به سیستم لاگین کرده باشه و بعد block شد به صورت اتوماتیک از سیستم LogOut بشه .

    کد زیر در ابتدای صفحه _layout گذاشتم :

    چه کدی رو در خط 93 بنویسم که با اجرا شدن این قسمت کاربر از سیستم لاگ اوت بشه ؟
    عکس های ضمیمه عکس های ضمیمه

  4. #4

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    بنده هم قبلا میخواستم همچین چیزی رو در Identity پیاده سازی کنم ، قبلا هم در Stackoverflow مطرح کردم که به نتیجه نرسید : https://stackoverflow.com/q/38689807
    روش هایی برای انجام اینکار در Membership هست اما Identity من چیزی پیدا نکردم : https://stackoverflow.com/a/3098840

  5. #5

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    یعنی شما روشی برای Log Out کردن کاربر در صورتی که فیلد
    LockoutEnabled مربوط به آن کاربر مقدار True را داشته باشد را سراغ ندارید ؟ حالا به هر سبک و روشی ؟

    قطعلا در قسمتی از این Identity کوفتی بخشی هست که در هر رفرش باید درست بودن یوزنیم و لاگین کاربر چک شود - البته خوب Identity از کوکی برای این کار استفاده میکند و فکر کنم همین کار را انقدر سخت کرده است.

    والا من کارهایی 100 برابر ازین قوی تر را در membership انجام دادم و هرتور که میخواستم طراحی رو کاستومایز میکردم ,
    متاسفانه در پروژه جاری که سه ماه پیش کلیک خورد اومدم از
    Identity برای این کار استفاده کردم (که فکر کنم بزرگترین اشتباه زندگیم بود)
    درحالی دانش کافیش ر وهم نداشتم و حالا هم بدجوری داغونم کرده - دوهفته دیگه باید پروژه رو تحویل بدم و با این وضعیت نمیدونم چیکارش کنم -

    هر قسمتیش رو میخوام توسعه بدم باید یک هفته سرچ کنم تا دو خط کد بهش اضافه کنم .درحالی که در قسمت های دیگه پروژم شده که در دور روز تا 4000 خط کد رو برای تکمیل بخشی بنویسم - نه اینکه بگم کد زیاد نوشتن دلیل ب بهتر بودن پروژه هست ولی در کل کلاس کاری پروژه و امکاناتش فوق العاده بالاتر ازین
    Identity مسخره است .
    بنظرم تنها کاربرش برای کسایی هست که نمیتونن خودشون کد بزنن و میان ازین روش ها استفاده میکنن.



  6. #6

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    خط 93 این کد رو بزارید :

    AuthenticationManager.SignOut(DefaultAuthenticatio nTypes.ApplicationCookie);

  7. #7

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    خط 93 این کد رو بزارید :

    AuthenticationManager.SignOut(DefaultAuthenticatio nTypes.ApplicationCookie);
    ممنون:


    Name Space های رو نشون نمیده که بتونم اضافشون کنم . به چه Name Space های نیاز هست ؟

  8. #8

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    اول از همه Resharper رو نصب کنید که هیچوقت درگیر پیدا کردن نام Assembly ها نشید.
    تو AccountController از این کد برای Logout استفاده شده ، این رفرنس هارو اضافه کنید :


    using System;
    using System.Globalization;
    using System.Linq;
    using System.Security.Claims;
    using System.Threading.Tasks;
    using System.Web;
    using System.Web.Mvc;
    using Microsoft.AspNet.Identity;
    using Microsoft.AspNet.Identity.Owin;
    using Microsoft.Owin.Security;

  9. #9

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    نقل قول نوشته شده توسط alibahman47 مشاهده تاپیک
    آقای تاجیک میخوام اگر کاربر به سیستم لاگین کرده باشه و بعد block شد به صورت اتوماتیک از سیستم LogOut بشه .

    کد زیر در ابتدای صفحه _layout گذاشتم :

    چه کدی رو در خط 93 بنویسم که با اجرا شدن این قسمت کاربر از سیستم لاگ اوت بشه ؟
    در عمل یا کوکی رو باید رو تایمرش بذارید و منتظر تایمر باشه که وقتی اکسپایر شد بعد دیگه بسته به رولی که نداره وارد نشه و ...
    ویا در نظر بگیر رولش گرفته شده یا بهش اضافه شده و ... به ازای هر خواست این رولش رو چک بکنید که اگر نداشت دیگه کاری که میخاین انجام بگیره. مثلا تو صفحه ای هست و حالا رولش گرفته شده و شما میخاین دیگه کامنت نذاره ... که وقتی درخواست کامنت رو فرستاد claim هاش بررسی بشه واگر qualification نبود دسترسیش رو ازش بگیری.

  10. #10

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    اول از همه Resharper رو نصب کنید که هیچوقت درگیر پیدا کردن نام Assembly ها نشید.
    تو AccountController از این کد برای Logout استفاده شده ، این رفرنس هارو اضافه کنید :


    using System;
    using System.Globalization;
    using System.Linq;
    using System.Security.Claims;
    using System.Threading.Tasks;
    using System.Web;
    using System.Web.Mvc;
    using Microsoft.AspNet.Identity;
    using Microsoft.AspNet.Identity.Owin;
    using Microsoft.Owin.Security;
    نصبکردم-اول ازهمه نصب میکنم - قبلاخودتون توصیش کردید.ممنون

    در کنترولر هم همه این ها وجود داشت - منظورم در VIew بود - چون این کد ویو خطا میده .

  11. #11

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    در عمل یا کوکی رو باید رو تایمرش بذارید و منتظر تایمر باشه که وقتی اکسپایر شد بعد دیگه بسته به رولی که نداره وارد نشه و ...
    ویا در نظر بگیر رولش گرفته شده یا بهش اضافه شده و ... به ازای هر خواست این رولش رو چک بکنید که اگر نداشت دیگه کاری که میخاین انجام بگیره. مثلا تو صفحه ای هست و حالا رولش گرفته شده و شما میخاین دیگه کامنت نذاره ... که وقتی درخواست کامنت رو فرستاد claim هاش بررسی بشه واگر qualification نبود دسترسیش رو ازش بگیری.
    اگه مدت زمان انقضای کوکی روکم بزارم که زود به زود چک بشه این باعث میشه همه کاربرا اذیت بشن وهی نیاز به لاگین داشته باشن.

    ولی در نهایت اگه مجبور بشم فکر کنم دادن یک Role خاص مثلا Block به کاربر موردنظر کار عاقلانه تری هست و فکر کنم جواب بده .
    فقط باید همه دسترسی ها رو برای این Role ببندم.
    ممنون .

  12. #12

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    لازم نیست حتما تو View هندل کنیدش ، داخل اکشن در کنترلر میتونید در Constructor و یا داخل Get اکشن چک کنید اگر کاربر LockoutEnabled اش فعال بود و باقی شرط ها که براتون فرستادم رو داشت ، کاربر رو از طریق اکشن Logout کنید .
    داخل View بهتره کمتر کدهایی رو که با Logic برنامه سرکار دارن بنویسید و همچین کدهایی رو داخل اکشن اجرا کنید .

  13. #13

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    لازم نیست حتما تو View هندل کنیدش ، داخل اکشن در کنترلر میتونید در Constructor و یا داخل Get اکشن چک کنید اگر کاربر LockoutEnabled اش فعال بود و باقی شرط ها که براتون فرستادم رو داشت ، کاربر رو از طریق اکشن Logout کنید .
    داخل View بهتره کمتر کدهایی رو که با Logic برنامه سرکار دارن بنویسید و همچین کدهایی رو داخل اکشن اجرا کنید .

    من هم از نوشتن کد ها در View کلا خودداری میکنم و همینطور تا حد امکان با کلاس و کد های ریپوزیتوری کار رو انجام میدم ولی این مورد فرق دارد ,
    من این کد رو هم از روش نوشن در ریپوزیتوری و فراخوانی آن در ابتدای _Layout و هم نوشتن آن در کنترولر تست کردم - کلا خطا میده !!


  14. #14

    نقل قول: نمایش کاربران آنلاین و بلاک کردن کاربران در Identity 2

    فاصله بین Authentication رو بردارید ، تو ادیتور اینجا که بنده فرستادم با فاصله افتاده ، نباید فاصله داشت باشن ، به این شکل :
    DefaultAuthenticationTypes.ApplicationCookie

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

  1. نحوه log کردن رفتار کاربران در Identity
    نوشته شده توسط jaykob در بخش ASP.NET MVC
    پاسخ: 1
    آخرین پست: سه شنبه 22 اردیبهشت 1394, 10:06 صبح
  2. مشکل در نمایش آنلاین و آفلان بودن کاربران در cms
    نوشته شده توسط kuchulu در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: چهارشنبه 06 مهر 1390, 09:01 صبح
  3. سوال: بلاک کردن اینترنت در کلاینت ها
    نوشته شده توسط kanionline در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 22 شهریور 1389, 23:40 عصر
  4. سوال: بلاک کردن آی‌پی در وب سایت
    نوشته شده توسط mahyartt در بخش ASP.NET Web Forms
    پاسخ: 10
    آخرین پست: چهارشنبه 15 اردیبهشت 1389, 16:50 عصر
  5. نمایش کاربران در GridView به همراه اطلاعات Profile
    نوشته شده توسط skflower در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 04 اسفند 1388, 00:39 صبح

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

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