پروژه من Asp.net core هست. می خواهم بعد از اینکه کاربر لاگین رو انجام داد و اطلاعات ورودی کاربر صحیح بود با توجه به نقشی که کاربر داره به یک مسیر خاص هدایت بشه.
مثلا اگر کاربر Admin سایت هست به سمت پنل ادمین هدایت بشه و اگر کاربر یک کاربر معمولی بود به سمت پنل خودش که داشبورد کاربران هست هدایت بشه.
در واقع هدف این هست که به صورت هوشمند کاربر هدایت بشه.
ممنون میشم دوستان و اساتید کد این کار رو که خودشون قبلا تست کردن برام قرار بدن اینجا
برای این منظور یعنی بعد از اینکه کاربر لاگین کرد به یک مسیر مشخص هدایت بشه باید نقش های کاربر یا همون Role ها موقع لاگین کردن مشخص باشه. با توجه به اینکه پروژه شما از نوع asp.net core هست شما باید دقت داشته باشید که در فایل statrtup.cs و در متد configure از میان افزارهای زیر استفاده کرده باشید
app.UseAuthentication();
app.UseAuthorization();
و همچنین به کاربران Role اختصاص داده شده باشه. با فرض اینکه همه این کارها به درستی انجام شده باشه می تونید توی اکشن متد Login دستورات زیر رو بنویسید
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(model.username,
model.Password, true, lockoutOnFailure: true);
if (result.Succeeded)
{
var user = _userManager.Users.Where(item => item.username == model.username).Single();
//Success Login
var userRole = _userManager.GetRolesAsync(user).Result.Single();
return RedirectToLocal(userRole);
}
else if (!result.Succeeded)
{
//اگر اطلاعات کاربر اشتباه بود
ModelState.AddModelError(string.Empty, "اطلاعات ورودی اشتباه است");
return View(model);
}
}
return View(model);
}
در قطعه کد بالا بعد از اینکه کاربر احراز هویت شد نقش کاربر رو بدست میاریم. دقیقا منظورم قطعه کد زیر هست
var userRole = _userManager.GetRolesAsync(user).Result.Single();
در کد بالا در متغیر userRole نقش کاربر رو نگهداری می کنیم. و در خط بعدی یک متد رو صدا می زنیم که ورودی این متد همون نقش کاربران هست، که با توجه به نقش کاربر کاربر رو به یک مسیر خاص که شما تعیین می کنید هدایت می کنه. این متد به صورت زیر هست
private IActionResult RedirectToLocal(string RoleName)
{
if (RoleName == "admin")
{
return Redirect("/AdminPanel/adminHome");
}
else if (RoleName == "user")
{
return Redirect("/UserPanel/userHome");
}
return null;
}
به این ترتیب شما می تونید بعد از لاگین موفق کاربر با توجه به نقش کاربر هدایت کنید به چه مسیری بره. ضمنا دقت کنید که برای هدایت کاربر به یک مسیر خاص بعد از لاگین از دستور Redirect استفاده شده که شما هم از این دستور استفاده کنید و مسیر مشخص شده هم به صورت Url نوشته شده.
کدهای بالا کاملا تست شده هستن و به درستی در پروژه کار می کنن. برای کسب اطلاعات بیشتر می تونید به این لینک هم مراجعه کنید.
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
363
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
469
- پاسخ :
1
|
تاریخ :
1403/06/17
- ساعت :
04:22:00 PM
- بازدید :
401
- پاسخ :
1
|
تاریخ :
1403/06/14
- ساعت :
06:44:00 PM
- بازدید :
498
- پاسخ :
0
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
564
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|