[c#] ASP.NET Identity 2.0에서 현재 사용자 ID 가져 오기

방금 새 2.0 버전의 Identity Framework를 사용하도록 전환했습니다. 1.0에서는 manager.FindByIdAsync(User.Identity.GetUserId()). 이 GetUserId()방법은 2.0에 존재하지 않는 것 같습니다.

이제 내가 알아낼 수 manager.FindByEmailAsync(User.Identity.Name)있는 것은 사용자 테이블의 사용자 이름 필드를 참조하는 것을 사용 하는 것입니다. 내 응용 프로그램에서 이것은 이메일 필드와 동일하게 설정됩니다.

누군가 이메일을 업데이트해야 할 때 문제가 발생하는 것을 볼 수 있습니다. Identity 2.0 Framework에서 변경되지 않는 값 (예 : id 필드) 을 기반으로 현재 로그인 된 사용자 개체를 가져 오는 방법이 있습니까?



답변

GetUserId()의 확장 방법 IIdentity이며 Microsoft.AspNet.Identity.IdentityExtensions. 를 사용하여 네임 스페이스를 추가했는지 확인하십시오 using Microsoft.AspNet.Identity;.


답변

Asp.net Identity 2.0에서 CurrentUserId를 가져 오려면 처음 가져올 때 Microsoft.AspNet.Identity:

씨#:

using Microsoft.AspNet.Identity;

VB.NET :

Imports Microsoft.AspNet.Identity

그런 다음 User.Identity.GetUserId()원하는 곳으로 전화하십시오 .

strCurrentUserId = User.Identity.GetUserId()

이 메소드는 데이터베이스의 사용자 ID에 대해 정의 된 데이터 유형으로 현재 사용자 ID를 리턴합니다 (기본값은 String).


답변

당신이 나와 같고 사용자 엔티티의 Id 필드가 Int 또는 문자열이 아닌 다른 것이라면,

using Microsoft.AspNet.Identity;

int userId = User.Identity.GetUserId<int>();

트릭을 할 것이다


답변

나는 같은 문제가 있었다. 현재 Asp.net Core 2.2를 사용하고 있습니다. 다음 코드로이 문제를 해결했습니다.

using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);

누군가에게 도움이 되길 바랍니다.


답변