gpt4 book ai didi

ASP.NET Identity,多个用户具有相同的用户名,但属于不同的公司。覆盖 FindAsync?

转载 作者:行者123 更新时间:2023-12-02 10:06:42 30 4
gpt4 key购买 nike

我是 MVC 和 EF 的新手,我正在开发一个使用身份进行用户和角色管理的项目。在 Visual Studio 的预定义登录函数中,有一个名为 FindAsync 的函数,用于通过用户名和密码获取用户。就我而言,可以有多个用户具有相同的用户名和密码,但他们属于不同的公司。我想知道最好的方法;我应该重写 FindAsync 函数(以及必要时的其他函数)并添加另一个参数,还是应该自己实现用户和角色管理,而不需要身份?或者还有其他更好的解决方案吗?

如果最好的解决方案是重写该函数,那么我有点不确定应该如何做,因为 UserManager 的源代码尚未开放。

下面您可以找到我的模型的登录功能和外卖:

    public async Task<ActionResult> Login(Login model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}

// If we got this far, something failed, redisplay form
return View(model);
}

public class Company
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}

public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
[Required]
public virtual int CompanyId { get; set; }
[Required]
public virtual Company Company { get; set; }
}

非常欢迎任何帮助!

最佳答案

我想我会创建自己的 UserManager 实现,并创建一个类似 FindByCompanyAsync(string userName, string password, string companyName)

的方法

在此方法中,您可以通过获取 UserManager 的所有用户来搜索用户,并使用 LINQ 表达式根据用户名和公司名称对其进行过滤。

关于ASP.NET Identity,多个用户具有相同的用户名,但属于不同的公司。覆盖 FindAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23415931/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com