В разделе «Вход в систему» на моем веб-сайте, чтобы пользователь мог войти в систему, его адрес электронной почты должен быть подтвержден. Если это подтверждается, вызывается метод SignInAsyn c.
Обычно это нормально, но есть определенные разделы веб-сайта, к которым «обычные пользователи» не могут получить доступ. Поэтому я использовал
[Authorize(Roles ="Admin")]
над всеми контроллерами, к которым пользователь не может получить доступ. Моя проблема сейчас заключается в том, что в случае, если пользователь введет ссылку, к которой у него нет доступа, из-за этого атрибута Authorize потребуется пользователь, имеющий роль администратора, для входа в систему. А когда обычный пользователь пытается войти в систему, тогда он просто обновляет страницу входа. Мне нужен способ проверить, авторизован ли пользователь (не аутентифицирован), но авторизован, чтобы я мог отобразить соответствующее сообщение об ошибке. Это код, который у меня есть на данный момент:
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.Email, model.Password);
if (user != null)
{
if (user.EmailConfirmed == true)
{
//await SignInManager.SignInAsync(user, model.RememberMe); return RedirectToLocal(returnUrl);
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
else
{
ModelState.AddModelError("", "Confirm Email Address.");
model.ErrorMessage = ("You need to confirm your email address in order to log in, please check yout emails");
return View(model);
}
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
model.ErrorMessage = "Username or password is incorrect";
return View(model);
}
}
Я искал ответы на этот вопрос в Интернете, но на всех найденных веб-сайтах есть решения для проверки того, прошел ли пользователь аутентификацию (вошел в систему), и не проверяет, если пользователь авторизован, что я и пытаюсь сделать.