باسلام
من میخام وقتی یه عده از کاربرا که دارای Role مثلا Student هستند پس از لاگین شدن به یه صفحه منتقل بشن! باید چکار کنم؟
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: return RedirectToLocal(returnUrl); case SignInStatus.LockedOut: return View("Lockout"); case SignInStatus.RequiresVerification: return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); case SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid login attempt."); return View(model); } }
من تو کد بالا قسمت .Success رو اینجوری تغییر دادم ولی اتفاقی نیوفتاد!
case SignInStatus.Success: { if (User.IsInRole("Student")) { return RedirectToAction("Index", "StudentProfile"); } else { return RedirectToLocal(returnUrl); } }
میخام وقتی کاربر دانشجو شد به صفحه دانشجو منتقل بشه
لطفا راهنمایی کنید
وقتی که کد کامل اجرا شد چه چیزی را برای شما باز گردانی می کند ؟
دستور شرطی که من گذاشتم عمل نمیکنه و به
return
RedirectToLocal(returnUrl);
میرسه
یه چیز دیگه :
if (User.IsInRole("Student"))
فکر کنم فقط تو View کار میکنه و تو کنترلر نمیشه استفاده کرد!!!
در وارد کردن حروف دقت کردید
به حروف کوچک و بزرگ حساس است
همه چی ظاهرا اوکیه!
بزرگ و کوچیک بودن هم کنترل شده
ولی جواب نمیده
یه بار هم خاموش روشن کردم
قبل از if شما تمام role های کاربر رو بگیرید و روی اون چک کنید
البته ببینید اصلا نقش ها رو برمیگردونه یا نه
بعد اجرا شدن دوباره به صفحه ورود redirect میشه ؟
نه به صفحه Home/Index ریدایرکت میشه منظور همون ReturnUrl هست
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)