我是 MVC 和 EF 的新手,我正在开发一个使用 Identity 进行用户和角色管理的项目。在 Visual Studio 的预定义登录函数中,有一个名为 FindAsync 的函数,用于通过用户名和密码获取用户。在我的情况下,可以有多个用户具有相同的用户名和密码,但他们将属于不同的公司。我想知道最好的方法;我应该重写 FindAsync 函数(以及其他必要的函数)并添加另一个参数,还是应该在没有 Identity 的情况下自己实现用户和角色管理?或者还有其他更好的解决方案吗?
如果最好的解决方案是覆盖该函数,那么我有点不确定我应该怎么做,因为 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; }
}
任何帮助都非常受欢迎!