>source

MVC5의 AspNet.Identity에서 전자 메일 주소 기반 사용자 이름을 구현하려고합니다. 내 응용 프로그램은 시스템에 등록 된 이메일 /사용자 이름이있는 한 발견됩니다.

사용자가 존재하지 않고 로그인하려고하면 예외가 72 행에 던져집니다.

예외 세부 사항 : system.nullReferenceException : 객체 참조가 객체의 인스턴스로 설정되지 않았습니다.

소스 오류 :

LINE 71 : //이메일이 확인되었는지 확인하기 위해이를 추가하십시오.
72 행 : var userid= usermanager.findByEmail (model.email) .ID;

여기에 내 code가 있습니다.

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        //Add this to check if the email was confirmed.
        var userid= UserManager.FindByEmail(model.Email).Id;
        //**Line 72. 'userid' is empty.**
        //Here is my attempt but doesn't do anything.
        if (string.IsNullOrEmpty(userid)) {
            ModelState.AddModelError("","You are not registered!");
        }
        if (!UserManager.IsEmailConfirmed(userid))
        {
            ModelState.AddModelError("", "E-mail address has not been confirmed.");
            return View(model);
        }
    }
    var result= await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
    switch (result)
    {
        case SignInStatus.Success:
            return RedirectToLocal(returnUrl);
        case SignInStatus.LockedOut:
            return View("Lockout");
        case SignInStatus.RequiresVerification:
            return RedirectToAction("SendCode", new { ReturnUrl= returnUrl });
        case SignInStatus.Failure:
        default:
            ModelState.AddModelError("", "Invalid login attempt.");
            return View(model);
    }
}

고맙습니다!

같은 문제. 실제로 모든 이유로 모든 것을 찾아 낼 수 없습니다. 대상 사용자가 앱을 만드는 동안 씨를 뿌렸습니다.

Ryan2021-04-07 17:10:37

해결되었습니다. 그냥 잘못된 인증 미들웨어 구성이있었습니다.

Ryan2021-04-07 17:10:37
  • 이전 html : 테이블 고정 헤더 및 스크롤 가능한 몸체
  • 다음 laravel : Socialite를 사용하여 null 유형의 값에 대한 배열 오프셋에 액세스하려는 OAuth 오류 "오류가 발생했습니다.