مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

راهنمایی در مورد CustomAuthorizeAttribute

  • دوشنبه 27 اردیبهشت 1395
  • 18:59
تشکر میکنم

با سلام.

در کلاس CustomAuthorizeAttribute این متد را نوشتم:

 protected override bool AuthorizeCore(HttpContextBase httpContext)
     {
            var isAuthorized = false;
            var username = httpContext.Session["Admin"]?.ToString();
            if (username == null) return false;
            var roles = this.Roles.Split(';', ',');
            roles.ToList().ForEach(x =>
            {
                if (System.Web.Security.Roles.IsUserInRole(username, x))
                    isAuthorized = true;
            });
            return isAuthorized;
        }

این متد فقط روی session با نام admin کار می کند. می خواهم هر session ای که وارد شد این متد رویش کار کند.

لطفا راهنمایی کنید

با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 27 اردیبهشت 1395
  • 19:16

با سلام 

دوست عزیز با کد زیر می توانید به تمام Session ها دسترسی داشته باشید

foreach (string item in Session.Contents)
            {
                Session[item].ToString();
            }

دوست عزیز منظورتون از هر Session چیه ؟

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • دوشنبه 27 اردیبهشت 1395
  • 19:30
            var username = httpContext.Session["Teacher"]?.ToString();

در کد بالا اگر session ای با نام Teacher وجود داشته باشد متغیر Username پر می شود.

می خوام نام session هر چه باشد این متغیر پر شود

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 27 اردیبهشت 1395
  • 19:40

دوست من برای دسترسی به یک Session خاص یا باید نام اون Session رو صدا بزنی یا ایندکسش رو 

Session[0].ToString()

Response.Write(Session["Teacher"].ToString());

اگر صورت مسئله کلی رو بگید که  قصدتتون چیه شاید بتونم بیشتر کمکتون کنم

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • دوشنبه 27 اردیبهشت 1395
  • 19:48
protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
           var isAuthorized = false;
           var username = httpContext.Session["Admin"]?.ToString();
           if (username == null) return false;
           var roles = this.Roles.Split(';', ',');
           roles.ToList().ForEach(x =>
           {
               if (System.Web.Security.Roles.IsUserInRole(username, x))
                   isAuthorized = true;
           });
           return isAuthorized;
       }

این متد برای سیستم authorized کار می کنه. در خط پنجم مقدار username در صورتی پر می شه که یک session با نام Admin وجود داشته باشد. اگر session با این نام وجود نداشته باشد متغیر username خالی می باشد و وارد سیستم authorized نمی شود.

امکان دارد session ای که وارد می شود نامش Teacher باشد یا نامش Student باشد. با Session با نامهای Teacher یا Student وارد سیستم authorized نمی شویم.

حال می خواهم Session ایجاد شده چه نامش Admin و چه Student و چه Teacher باشد وارد سیستم Authorized بشود.

امیدوارم توانسته باشم منظور را برسانم

با تشکر

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 27 اردیبهشت 1395
  • 20:08

دوست عزیز  شما داخل سشن Admin یا Student یا Teacher   نام کاربری را میریزید یا نام نقش کاربری را

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 27 اردیبهشت 1395
  • 20:28

دوست عزیز یک Session با نام UserName تعریف کنید و مقدار  Admin یا Student یا Teacher  رو داخل اون بریزید

بعد توی اون متد authorized   با گذاشتن دستورات شرط تصمیم بگیرید

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • دوشنبه 27 اردیبهشت 1395
  • 21:31

با سپاس و تشکر فراوان

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)