如何在MVC 4应用程序中进行单用户登录

 jysghyb 发布于 2023-02-09 14:26

我正在实施一个应用程序,其中使用该应用程序的公司中的每台机器都有一个机制.我正在尝试实现一个用户策略,如果用户处于"Mechanic"角色 - 用户名为Machine1,并且已登录该机器,则只有一个用户可以使用Machine1用户名同时登录公司.如果其他人尝试使用相同的用户名登录,则应阻止该用户名并告知已登录用户.当会话超时到期时,我应该注销登录用户并释放要使用的登录名.当用户自己注销时也会发生同样的情况.我正在尝试在asp.net MVC 4应用程序上构建它.

我曾想过在数据库中使用SessionId,UserId和IsLoggedIn布尔值.但在这种情况下,我需要更改MVC应用程序中会话超时的登录标志以写入数据库,如果许多用户登录,这似乎有点过分.

实施会是什么样的?我应该使用哪些方法或属性来处理数据库中的会话管理?

FYI

我已经制作了自己的方法,我检查用户是否已登录,这里是:

public static bool ValidateUser(string username, string password, string companyName)
{
    int? companyId = myRepository.GetCompanyId(companyName);

    int? userId = companyId == 0 ? null : myRepository.GetUserId(username, companyId);

    if (userId.HasValue && userId.Value != 0)
    {
        var userKey = Security.GenerateUserKey(username, companyName);
        return WebSecurity.Login(userKey, password);
    }
    else
    {
        return false;
    }
}

在这个方法中,我可以检查会话ID是否与数据库中的相同.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有