با سلام خدمت تمام برنامه نویسان
سوال من اینکه ایا میشه 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 های تکراری استفاده کنم
ممنونم
شما باید نام کاربری را uniq کنید از ثبت نام کاربری تکراری جلوگیری کنید
ویا میتونید موقع لاگین به جای نام کاربری کد کاربر را در FormsAuthentication قرار دهید
ممنونم استاد مدائنی عزیز ولی اگه بجای نام کاربری کد کاربر رو وارد کنم وقتی که HttpContext.Current.User.Identity.Name صدا بزنم بجای نام کاربر مثلا 1 رو برمیگردونه
مشکل کجاست ؟
هر موقع خواستید از روی کد میتونید نام رو استخراج کنید
و یا یا , از هم جدا کنید و قرار دهید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)