>

Winforms 프로젝트에서 AspNet.Identity를 사용하고 있습니다. 전달 된 사용자 이름을 통해 UserManager.FindByNameAsync로 사용자를 성공적으로 찾고 있지만 전달 된 암호로 로그인 할 수 없습니다. 동일한 데이터베이스와 동일한 정확한 자격 증명을 사용하여 MVC 앱에서 제대로 로그인 할 수 있습니다.

내 코드는 다음과 같습니다 :

public async Task<List<string>> VerifyUserNamePassword(string userName, string password)
    {
        var usermanager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new IdentityFrameworkDbContext()));
        var user = await usermanager.FindAsync(userName, password);
        //This is ALWAYS NULL!
        if (user != null) 
            label1.Text = "Success!";
        var u = await usermanager.FindByEmailAsync(userName);
        if (u != null)
        {
            //This works up to this point - check if password is correct
            var success = await usermanager.CheckPasswordAsync(u, password);
            //THIS IS ALWAYS FALSE!
            if (success)
                label1.Text = "YES THIS WORKED!";
        }            
        //This works, I get the Roles back and they are correct
        var users = await usermanager.GetRolesAsync(u.Id);
        return users.ToList();
    }

  • 답변 # 1

    비밀번호 해시는 app.config 또는 web.config의 이러한 설정에 따라 다릅니다.

    <system.web>
      <machineKey decryption="" decryptionKey="" validation="" validationKey="" />
    </system.web>
    
    

    프레임 워크에 설정이 없으면 machine.config가 사용됩니다. 여러 앱 또는 배포에서 동일한 데이터베이스를 사용하려면 해당 배포에서 동일한 값을 제공해야합니다.

    실행중인 aps.net 인스턴스가 있으므로 web.config 의 값을 복사해야합니다.  당신의 창 양식에 app.config  또는 웹 서버의 machine.config에서 가져옵니다.

관련 자료

  • 이전 python - Pytorch에서 VGG16을 구현하여 크기 불일치 오류 발생
  • 다음 geepack R에서 결 측값 처리