Asp.Net Core注销被禁止的用户

时间:2018-11-19 08:36:48

标签: asp.net-core .net-core asp.net-core-2.1

我要从我的网站禁止特定用户,并使用禁止信息更新数据库字段,但是如果他们已经登录,他们仍然可以使用网站

我可以控制数据库中每个请求的禁令信息,但是我不想控制数据库,如果由于性能原因而禁止用户禁止每个请求。

有什么简单的方法可以做到吗?

我如何强迫他们注销?

2 个答案:

答案 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,我认为它应该更好。向客户端发送请求,该请求向服务器发出新请求以退出。