스택큐힙리스트

어떻게 ASP.NET Core에서 현재 사용자를 얻을 수 있나요? 본문

카테고리 없음

어떻게 ASP.NET Core에서 현재 사용자를 얻을 수 있나요?

스택큐힙리스트 2023. 12. 2. 23:43
반응형

현재 사용자를 가져와서 이메일 주소와 같은 필드에 접근할 수 있도록 하려고 합니다.
하지만 asp.net core에서는 이것을 할 수 없습니다.
이것이 내 코드입니다:


HttpContext는 컨트롤러의 생성자에서 거의 null입니다.
각 작업마다 사용자를 가져오는 것은 좋지 않습니다. 사용자 정보를 한 번 가져와서 ViewData에 저장하고 싶습니다;


public DashboardController()
{
var user = HttpContext.User.GetUserId();
}

답변 1

User.FindFirst(ClaimTypes.NameIdentifier).Value

생성자를 위한 수정


다음 코드가 작동합니다:


public Controller(IHttpContextAccessor httpContextAccessor)
{
var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
}

RTM을 위한 수정


IHttpContextAccessor를 등록해야 합니다:


    public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
}

답변 2

ASP.NET Core에서 현재 사용자를 가져오는 방법은 User property를 통해 간단하게 얻을 수 있습니다. User property는 현재 인증된 사용자에 대한 정보를 제공합니다.
ASP.NET Core는 기본적으로 인증 및 권한 인증에 빌트인 지원을 제공합니다. 사용자 인증이 설정되어 있으면 현재 사용자에 대한 정보를 가져올 수 있습니다.
먼저 ConfigureServices 메서드에서 인증 서비스를 구성해야합니다. 예를 들어, 쿠키 인증 서비스를 구성하려면 다음과 같이 코드를 작성할 수 있습니다.
```csharp
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = /Account/Login;
options.AccessDeniedPath = /Account/Forbidden;
});
```
이렇게하면 인증 서비스가 구성되고 사용자가 로그인할 때 추가 설정을 적용할 수 있습니다. 로그인 경로 및 액세스 거부 경로를 지정할 수 있습니다.
이제 컨트롤러에서 현재 사용자에 액세스할 수 있습니다. 간단하게 User 속성을 사용하여 인증된 사용자에 대한 정보에 액세스 할 수 있습니다.
```csharp
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
public class HomeController : Controller
{
public IActionResult Index()
{
var user = User;
// 현재 사용자에 대한 정보를 사용하여 원하는 작업 수행
return View();
}
}
```
User 속성은 현재 요청에 대한 사용자와 관련된 정보를 제공합니다. 이 정보를 사용하여 현재 사용자의 식별자, 이메일, 역할 등과 같은 정보에 액세스 할 수 있습니다.
이러한 방식으로 ASP.NET Core에서 현재 사용자를 가져올 수 있습니다. 유저 프로퍼티를 사용하여 인증된 사용자에 대한 정보를 간단하게 얻을 수 있고, 이를 활용하여 유저에게 맞는 동작을 수행할 수 있습니다. 이를 통해 웹 애플리케이션을 보안하고 사용자 경험을 향상시킬 수 있습니다.
하지만, 웹사이트의 SEO에 관심을 가진다면 다른 방법도 고려해야 합니다. 사용자 인증에 대한 구체적인 내용은 SEO에 크게 영향을 미치지 않을 수 있으며, 대부분의 검색 엔진은 이러한 정보를 무시합니다. 대신, 웹사이트의 콘텐츠, 페이지 속도, 링크 구조 등에 초점을 맞추는 것이 더 중요합니다.
따라서 SEO에 대한 영향을 최소화하려면 웹사이트의 콘텐츠 품질을 향상시키고, 적절한 키워드를 사용하여 메타 태그와 URL을 최적화하는 등의 다른 SEO 기법을 사용해야합니다.

반응형
Comments