我要从我的网站禁止特定用户,并使用禁止信息更新数据库字段,但是如果他们已经登录,他们仍然可以使用网站
我可以控制数据库中每个请求的禁令信息,但是我不想控制数据库,如果由于性能原因而禁止用户禁止每个请求。
有什么简单的方法可以做到吗?
我如何强迫他们注销?
答案 0 :(得分:0)
感谢您的回答,我没有找到任何控制数据库的方法,
我每20个请求就使用cookie验证程序,以减少数据库检查,如果用户被禁止,则我注销他/她
答案 1 :(得分:-1)
我只能考虑这种 hacking :
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,我认为它应该更好。向客户端发送请求,该请求向服务器发出新请求以退出。