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

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

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

اختلال در Role ها

  • جمعه 17 اردیبهشت 1395
  • 20:04
تشکر میکنم

با سلام خدمت تمام برنامه نویسان

سوال من اینکه ایا میشه roles  رو برای یک کاربر بر اساس UserName & Password  برگردونیم ؟؟ الان چیزی که داخل کلاس RoleProvider هست فقط بر اساس UserName هستش . من دوتا کاربر با یک نام کاربری ایجاد کردم یکی با دسترسی Admini   و دیگری دسترسی Register  حالا وقتی با کاربر که دسترسی Register داره login  میکنم به بخش Administrator دسترسی دارم

کد مربوط به login

[HttpPost]
        public ActionResult Login(LoginViewModel login, string ReturnUrl = "")
        {

            if (ModelState.IsValid)
            {
                User u = db.Users.FirstOrDefault(x => x.UserName == login.UserName && x.Pasword == login.Password);

                if (u != null)
                {
                    Session.Add("UserID", u.UserID); 
                    FormsAuthentication.SetAuthCookie(login.UserName, login.RemmberMe);
                    
                    if (ReturnUrl != "")
                    {                                                                              
                        return Redirect(ReturnUrl);
                    }
                    else
                    {
                        if (u.Role.RoleName.Equals("Admin"))
                        {
                             return Redirect("~/Administrator/CPanel");
                        }
                        return Redirect("/");
                    }

                }
                else
                {
                    ModelState.AddModelError("UserName", "کاربری با چنین مشخصات یافت نشد");
                }
            }

            ModelState.Remove("Password");
            return View(Login);
        }

و اینم کد مربوط به Provider  که باز نویسی کردم

 

 public override string[] GetRolesForUser(string username)
        {
            using (Grocery_Store.Models.Grocery_StoreEntities db = new Grocery_Store.Models.Grocery_StoreEntities())
            {
                return (from u in db.Users
                        join r in db.Roles
                        on u.RoleID equals r.RoleID
                        where u.UserName == username
                        select r.RoleName).ToArray();
            }
        }

و اینم کد های مربوط به Web.config

 

<authentication mode="Forms">
      <forms name="mysite" timeout="30" defaultUrl="/" loginUrl="/Account/Login"/>
    </authentication>
    <roleManager enabled="true" defaultProvider="MyProvider">
      <providers>
        <clear/>
        <add name="MyProvider" type="Grocery_Store.Classes.MyProvider"/>
      </providers>
    </roleManager>
  </system.web>

 <location path="Administrator">
    <system.web>
      <authorization>
        <allow roles="Admin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

 

لطفا توضیح بدید  . میخوام که بتون از UserName های تکراری استفاده کنم

ممنونم

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

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

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 17 اردیبهشت 1395
  • 20:22

شما باید نام کاربری را uniq کنید از ثبت نام کاربری تکراری جلوگیری کنید

ویا میتونید موقع لاگین به جای نام کاربری کد کاربر را در FormsAuthentication قرار دهید

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • جمعه 17 اردیبهشت 1395
  • 20:31

ممنونم استاد مدائنی عزیز  ولی اگه بجای نام کاربری کد کاربر رو وارد کنم  وقتی که  HttpContext.Current.User.Identity.Name صدا بزنم بجای نام کاربر مثلا 1 رو برمیگردونه

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 17 اردیبهشت 1395
  • 20:33

مشکل کجاست ؟

هر موقع خواستید از روی کد میتونید نام رو استخراج کنید

و یا یا , از هم جدا کنید و قرار دهید

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

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

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

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