2016-08-26 5 views
3

에서 applicationuser의 속성을 받기 나는이 링크를 발견asp.net 코어 정체성

How to get the current logged in user Id ASP.NET Core

을하지만 대답은 모두 구식입니다! MVC의 행동에 How should I access my ApplicationUser properties from within my MVC 6 Views?

:

그리고이 SO 포스트는 둘의 단지 상용구 해결 방법, 해결책이 될 수 없습니다 base.User 유형 ApplicationUser으로하지 않습니다 둘 base.User.Identity입니다. 둘 모두 ApplicationUser에 캐스팅 될 수 없습니다.

로그인했을 때 applicationuser 객체에 넣은 사용자 정의 속성에 어떻게 액세스합니까?

답변

1

컨트롤러의 경우 UserManager<ApplicationUser>에 종속됩니다. 그런 다음 요청의 HttpContext를 통해 ApplicationUser에 액세스 할 수 있습니다. 현재 사용자를 반환, 당신은 자신의 모든 속성에 액세스 할 수 있습니다

public static class IdentityExt 
{ 
    public static Task<T> GetCurrentUser<T>(this UserManager<T> manager, HttpContext httpContext) where T: class{ 
     return manager.GetUserAsync(httpContext.User); 
    } 
} 

: 내 프로젝트에 대한 확장 방법을 썼다. 여기

이 작업 안에 :

public Task<IActionResult> Index(){ 
    var user = await _userManager.GetCurrentUser(HttpContext); 
} 
+0

f..k ... 난 그냥 얻을 수있는 방법을 찾을 수있는 ApplicationUser와 I를 받아들이는 전에 GetUserIdAsync 시도/그 ... 왜 캐스팅 GetUserIdAsync (base.User) 메서드가 오버로드되지 않았습니까? 어리석은 ... 감사 Mike_G !!! 처음에 나는 사용자의 ID를 얻으려고 시도했다. 그런 다음 실제로 사용자 정의 속성을 얻은 다음에 여기에 질문을했다 :-) – Pascal

+0

@Mike_G ... 멋진 확장 방법. 나는 웹 개발에 익숙하지 않다. What/Where는 사용자 개체를 항상 사용할 수 있도록 파이프 라인에서 가장 좋은 장소이며 한 번만 검색하면됩니다. 당신이 필요할 때마다 사용자 객체를 물어 보는 것이 반복되는 것처럼 보입니다. – dinotom