방금 새 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);
누군가에게 도움이 되길 바랍니다.