簡體   English   中英

使用數據庫值的ASP.NET MVC身份登錄

[英]ASP.NET MVC Identity login using database values

在過去的幾天里,我一直在嘗試使登錄功能適用於我的ASP.NET MVC應用程序。 我的應用程序的用戶數據存儲在MS SQL數據庫(2008 R2)中。 該數據的表格如下:

table EMPLOYEE
EMPLOYEECODE        int                  identity
NAME                varchar(75)          not null
PASSWORD            varchar(255)         not null

使用實體框架將產生以下模型:

public partial class EMPLOYEE
{    
    public int EMPLOYEECODE { get; set; }
    public string NAME { get; set; }
    public string PASSWORD { get; set; }
}

我想做的是編輯提供的(默認)AccountController,以使其能夠使用EMPLOYEE(EMPLOYEECODE,PASSWORD)來驗證和登錄用戶。 我想我需要更改UserManager以使其使用EMPLOYEE以及EMPLOYEECODE和PASSWORD字段,但我不知道如何。 當前的登錄方法如下:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel 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);
}

我的UserManager實例如下:

public AccountController()
        : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
    {
    }

我該如何解決這個問題? 我也嘗試過使用身份驗證cookie,但是我不知道如何從cookie中檢索用戶名。 任何幫助將不勝感激!

UserManager和UserStore通過其自己的用戶,角色等表與ASP.NET Identity身份驗證關聯。如果要使用其他表,則必須創建自定義登錄功能。

我有一個類似的要求,最終我做了以下事情:

  • 使用遷移來創建身份表
  • 修改了Identity類以使用INT代替GUID作為Id
  • 將我的數據從Employee表遷移到AspNetUsers表
  • 在您的情況下,將EmployeeCode映射到AspNetUsers.Id字段,將密碼映射到AspNetUsers.PasswordHash。
  • 根據您在Db中保存密碼的方式,您可能需要在此處添加一個額外的步驟,以便以散列格式將它們添加到表中。

如果需要對密碼進行哈希處理,而不是遷移數據,請查看如何在Identity中注冊用戶,並使現有用戶通過相同的過程進行處理,如下所示:

  1. 獲取您的Employee表中所有用戶的列表
  2. 對於每個用戶,使用owin上下文來檢索UserManager和SignIn Manager
  3. 使用EmployeeCode和EmployeePassword創建一個新的ApplicationUser
  4. 使用UserManager在數據庫中創建用戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM