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


81

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

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

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


UserId를 어떻게 얻었습니까? 알려주시겠습니까? 같은 문제가 발생했습니다.
Ammar Khan

답변:


108

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



2
즉 신원 2. 어떤 제안과 함께하시기 바랍니다 작동하지 않는 것 같습니다
아마르 칸

2
여전히 거기 있어야합니다. 지금 내 Identity 2 프로젝트에서 GetUserId ()를 사용하고 있습니다.
안토니 추

4
Identity 3.0에서는 System.Security.Principal 네임 스페이스로 이동 한 것으로 보입니다.
Sam

현재 사용자 역할을 얻는 방법이 있습니까? 언제 역할을 설정해야합니까? 참고 : 사용자 지정 스토리지 공급자를 사용하고 있습니다. ..
Jeeva Jsb

61

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).


1
Microsoft.AspNet.Identity 네임 스페이스에 해당하는 DLL을 어디서 찾을 수 있습니까?
Franziee 2015

14

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

using Microsoft.AspNet.Identity;

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

트릭을 할 것이다


4

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

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

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


1
당신은 내 생명을 구했습니다
Sam Tubb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.