Я могу думать только об этом взлом :
public class HomeController : Controller
{
private readonly SignInManager<User> _signInManager;
private readonly SignInManager<User> _userManager;
public HomeController(
SignInManager<User> signInManager,
UserManager<ApllicationUser> userManager)
{
_signInManager = signInManager;
_userManager = userManager;
}
public async Task<IActionResult> Index()
{
var user = await _userManager.GetUserAsync(User);
if (user.Status == UserStatus.Banned)
{
await _signInManager.SignOutAsync();
}
return View();
}
}
Использование учетной записи администратора для изменения статуса пользователя на Banned
. Затем, если заблокированный пользователь пытается получить доступ к какой-либо странице, мы проверяем статус пользователя, прежде чем вернуть View
.
Если у вас есть время, вы можете преобразовать код в атрибут следующим образом:
[UserStatus("Active")]
public IActionResult Index()
{
// user with status is NOT active cannot assign to this page
return View();
}
ОБНОВЛЕНИЕ: Если вы можете использовать SignalR в своем проекте, я думаю, что это должно быть лучше. Отправьте запрос клиенту, который делает новый запрос на сервер, чтобы выйти.