سلام
یک پروژه با Asp.net core 2.2 دارم. بعد از اینکه کاربر لاگین انجام میده، میخوام چک کنم که آیا کاربر Authorize شده یا نه. با اینکه لاگین رو با دستور _signInManager.PasswordSignInAsync انجام میدم و پیغام success میده اما مقدار User.Identity.IsAuthenticated همیشه flase هست.
ضمنا موقع لاگین از Session استفاده میکنم.
کدهای لاگین به صورت زیر هست :
[HttpPost]
public async Task<IActionResult> AuthorizeCodeView(AuthorizeViewmodel model, string phNo)
{
ViewBag.Phone = phNo;
if (ModelState.IsValid)
{
try
{
if (model.AuthorizeCode == HttpContext.Session.GetString(phNo))
{
_iur.ConfirmPhoneNumber(phNo);
var result = await _signInManager.PasswordSignInAsync(phNo, "sS17481748$&", false, lockoutOnFailure: true);
if (result.Succeeded)
{
var user = await _userManager.FindByNameAsync(phNo);
var userRole = _userManager.GetRolesAsync(user).Result.ToArray();
if (user.FirstName == "" || user.FirstName == null ||
user.Family == "" || user.Family == null)
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Index", "UserInfo", new { area = "UserPanel", message = "لطفا جهت استفاده از امکانات سایت اطلاعات زیر را تکمیل کنید." });
}
}
else
{
return RedirectToAction("Index", "UserHome", new { area = "UserPanel" });
}
}
}
else
{
ModelState.AddModelError("AuthorizeCode", "کد وارد شده صحیح نیست");
return View();
}
//}
ModelState.AddModelError("AuthorizeCode", "لطفا مجددا تقاضای کد فعالسازی کنید");
return View();
}
catch
{
ModelState.AddModelError("AuthorizeCode", "لطفا مجددا تست کنید");
return View();
}
}
return View();
}
توی کدهای بالا و در خطی که کنترل شده User.Identity.IsAuthenticated همیشه مقدار false رو دارم و خط داخل شرط یعنی کد زیر اجرا نمیشه
return RedirectToAction("Index", "UserInfo", new { area = "UserPanel", message = "لطفا جهت استفاده از امکانات سایت اطلاعات زیر را تکمیل کنید." });
سلام دوست عزیز منطقی که شما در حال پیاده سازی آن می باشید اشتباه است البته به نظر خودم چرا؟؟؟؟؟ چون وقتی Result.Succeed موفق آمیز باشه و نتیجه درست رو برگدونه ینی کاربر لاگین کرده و دیگر نیازی به بررسی مجدد User.Identity.IsAutica.... نخواهد بود ضمنا استفاده از دستور User.Identity... در ویو های برنامه برای چک لاگین شدن کاربر برای نمایش قسمت خاصی از صفحه کابرد دارد نه در یک متد پست.
شما باید بعد از دستور زیر کاربر را به صفحه مور نظر خود هدایت کنید.
if (result.Succeeded)
پاسخ به mrhadiannet
ممنون از شما بابت پاسخ ولی وقتی کاربر لاگین میکنه دلیل نمیشه که Authorize هم شده. من میخوام کاربر رو بعد از لاگین هدایت کنم به یک کنترلر. این کنترلر دارای نقش User هست و تا زمانی که دستور User.Identity.IsAuticate برابر با false باشه کاربر نمیتونه وارد این کنترلر بشه. لاگین کردن دلیل بر این نیست که کاربر به همه کنترلرها یا اکشن ها دسترسی داره.
چرا Role های کاربر رو بررسی نمیکنی؟
کاربری که لاگین میکنه یه سری Role هم داره. با توجه به role ها هدایتش کن.
اگر هم role نداشت، یا لاگین نیست یا Authenticate نشده.
var UserRole = _userManager.GetRolesAsync(User).Result;
//redirect User
if (UserRole.Contains("Writer"))
{
return Redirect("/Writer/Home");
}
else
{
return Redirect("/Viewer/Home");
}
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
111
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
216
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
111
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|