Dreamine.Identity 1.0.0.0
Dreamine.Identity 프로젝트의 API와 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Identity.DreamineIdentityExtensions 클래스 참조

더 자세히 ...

정적 Public 멤버 함수

static IServiceCollection AddDreamineIdentityWpfHost (this IServiceCollection services)
static IServiceCollection AddDreamineIdentityWeb (this IServiceCollection services, AuthOptions authOptions, string databasePath)
static IEndpointRouteBuilder MapDreamineIdentityEndpoints (this IEndpointRouteBuilder endpoints)

정적 Public 속성

const string UserIdClaimType = "dreamine:userid"
const string ProviderClaimType = "dreamine:provider"

정적 Private 멤버 함수

static void RegisterAuthServices (IServiceCollection services, AuthOptions authOptions, string databasePath)
static async Task OnCreatingTicketAsync (OAuthCreatingTicketContext context, string providerName)
static async Task OnKakaoCreatingTicketAsync (OAuthCreatingTicketContext context)
static async Task UpsertExternalUserAsync (OAuthCreatingTicketContext context, string providerName, string providerKey, string email, string displayName, string avatarUrl)
static ? JsonElement TryGetProperty (JsonElement element, string name)
static string ReadString (JsonElement element, string name)
static void AddClaimIfNotEmpty (ClaimsIdentity identity, string type, string value)
static async Task EnforceRequiredConsentsAsync (HttpContext context, RequestDelegate next)
static bool ShouldSkipConsentGate (PathString path)
static string BuildCurrentUrl (HttpRequest request)

정적 Private 속성

const string ProviderGoogle = "Google"
const string ProviderNaver = "Naver"
const string ProviderKakao = "Kakao"

상세한 설명

Dreamine 애플리케이션에 공유 쿠키, 로컬 계정 및 OAuth 로그인을 통합하는 확장 메서드를 제공합니다.

DreamineIdentityExtensions.cs 파일의 34 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ AddClaimIfNotEmpty()

void Dreamine.Identity.DreamineIdentityExtensions.AddClaimIfNotEmpty ( ClaimsIdentity identity,
string type,
string value )
inlinestaticprivate

값이 있고 같은 형식의 클레임이 없을 때만 클레임을 추가합니다.

매개변수
identity수정할 클레임 ID입니다.
type클레임 형식입니다.
value클레임 값입니다.

DreamineIdentityExtensions.cs 파일의 841 번째 라인에서 정의되었습니다.

842 {
843 if (!string.IsNullOrWhiteSpace(value) && !identity.HasClaim(claim => claim.Type == type))
844 {
845 identity.AddClaim(new Claim(type, value));
846 }
847 }

다음에 의해서 참조됨 : OnKakaoCreatingTicketAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ AddDreamineIdentityWeb()

IServiceCollection Dreamine.Identity.DreamineIdentityExtensions.AddDreamineIdentityWeb ( this IServiceCollection services,
AuthOptions authOptions,
string databasePath )
inlinestatic

일반 ASP.NET Core 웹 애플리케이션에 Dreamine Identity 공유 쿠키와 로그인 서비스를 등록합니다.

일반 ASP.NET Core 웹 애플리케이션에 Dreamine Identity 공유 쿠키와 로그인 서비스를 등록합니다.

매개변수
services인증 서비스를 추가할 컬렉션입니다.
authOptions인증 구성 옵션입니다.
databasePath사용자 SQLite 파일 경로입니다.
반환값
동일한 서비스 컬렉션입니다.
예외
ArgumentNullExceptionservices 또는 authOptionsnull인 경우 발생합니다.
ArgumentExceptiondatabasePath 가 비어 있거나 공백인 경우 발생합니다.

DreamineIdentityExtensions.cs 파일의 307 번째 라인에서 정의되었습니다.

311 {
312 ArgumentNullException.ThrowIfNull(services);
313 ArgumentNullException.ThrowIfNull(authOptions);
314 ArgumentException.ThrowIfNullOrWhiteSpace(databasePath);
315
316 RegisterAuthServices(services, authOptions, databasePath);
317 services.Configure<ForwardedHeadersOptions>(forwarded =>
318 {
319 forwarded.ForwardedHeaders =
320 ForwardedHeaders.XForwardedFor |
321 ForwardedHeaders.XForwardedProto |
322 ForwardedHeaders.XForwardedHost;
323 forwarded.KnownNetworks.Clear();
324 forwarded.KnownProxies.Clear();
325 });
326
327 return services;
328 }

다음을 참조함 : RegisterAuthServices().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ AddDreamineIdentityWpfHost()

IServiceCollection Dreamine.Identity.DreamineIdentityExtensions.AddDreamineIdentityWpfHost ( this IServiceCollection services)
inlinestatic

포함된 BlazorWebView가 AuthorizeView를 사용할 수 있도록 WPF 호스트 DI에 익명 인증 상태를 등록합니다.

포함된 BlazorWebView가 AuthorizeView를 사용할 수 있도록 WPF 호스트 DI에 익명 인증 상태를 등록합니다.

매개변수
services인증 서비스를 추가할 컬렉션입니다.
반환값
동일한 서비스 컬렉션입니다.
예외
ArgumentNullExceptionservicesnull인 경우 발생합니다.

DreamineIdentityExtensions.cs 파일의 124 번째 라인에서 정의되었습니다.

125 {
126 ArgumentNullException.ThrowIfNull(services);
127 services.AddAuthorizationCore();
128 services.AddCascadingAuthenticationState();
129 services.AddScoped<AuthenticationStateProvider, AnonymousAuthenticationStateProvider>();
130 return services;
131 }

◆ BuildCurrentUrl()

string Dreamine.Identity.DreamineIdentityExtensions.BuildCurrentUrl ( HttpRequest request)
inlinestaticprivate

현재 요청의 경로 기준 반환 URL을 만듭니다.

매개변수
request현재 HTTP 요청입니다.
반환값
경로, PathBase 및 쿼리를 포함한 반환 URL입니다.

DreamineIdentityExtensions.cs 파일의 996 번째 라인에서 정의되었습니다.

997 {
998 var path = request.PathBase.Add(request.Path).ToString();
999 var query = request.QueryString.HasValue ? request.QueryString.Value : string.Empty;
1000 return string.IsNullOrEmpty(path) ? $"/{query}" : $"{path}{query}";
1001 }

다음에 의해서 참조됨 : EnforceRequiredConsentsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EnforceRequiredConsentsAsync()

async Task Dreamine.Identity.DreamineIdentityExtensions.EnforceRequiredConsentsAsync ( HttpContext context,
RequestDelegate next )
inlinestaticprivate

인증된 사용자의 필수 동의를 확인하고 미완료 사용자를 동의 화면으로 보냅니다.

매개변수
context현재 HTTP 컨텍스트입니다.
next다음 미들웨어입니다.
반환값
동의 검사 또는 다음 미들웨어 실행 작업입니다.

DreamineIdentityExtensions.cs 파일의 881 번째 라인에서 정의되었습니다.

882 {
883 if (ShouldSkipConsentGate(context.Request.Path) ||
884 context.User.Identity?.IsAuthenticated != true)
885 {
886 await next(context).ConfigureAwait(false);
887 return;
888 }
889
890 var userIdValue = context.User.FindFirstValue(UserIdClaimType);
891 if (!long.TryParse(
892 userIdValue,
893 System.Globalization.NumberStyles.None,
894 System.Globalization.CultureInfo.InvariantCulture,
895 out var userId))
896 {
897 await next(context).ConfigureAwait(false);
898 return;
899 }
900
901 var userStore = context.RequestServices.GetService<IUserStore>();
902 if (userStore is null)
903 {
904 await next(context).ConfigureAwait(false);
905 return;
906 }
907
908 var user = await userStore.GetByIdAsync(userId, context.RequestAborted).ConfigureAwait(false);
909 if (RequiredConsentPolicy.HasRequiredConsents(user))
910 {
911 await next(context).ConfigureAwait(false);
912 return;
913 }
914
915 var returnUrl = Uri.EscapeDataString(BuildCurrentUrl(context.Request));
916 context.Response.Redirect($"/_identity/consent?returnUrl={returnUrl}");
917 }

다음을 참조함 : BuildCurrentUrl(), Dreamine.Identity.IUserStore.GetByIdAsync(), ShouldSkipConsentGate(), UserIdClaimType.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ MapDreamineIdentityEndpoints()

IEndpointRouteBuilder Dreamine.Identity.DreamineIdentityExtensions.MapDreamineIdentityEndpoints ( this IEndpointRouteBuilder endpoints)
inlinestatic

Dreamine Identity의 로컬 로그인, 가입, 동의 및 계정 엔드포인트를 현재 웹 애플리케이션에 매핑합니다.

매개변수
endpoints인증 경로를 추가할 엔드포인트 작성기입니다.
반환값
동일한 엔드포인트 작성기입니다.
예외
ArgumentNullExceptionendpointsnull인 경우 발생합니다.

DreamineIdentityExtensions.cs 파일의 362 번째 라인에서 정의되었습니다.

363 {
364 ArgumentNullException.ThrowIfNull(endpoints);
365 endpoints.MapAuthEndpoints();
366 return endpoints;
367 }

◆ OnCreatingTicketAsync()

async Task Dreamine.Identity.DreamineIdentityExtensions.OnCreatingTicketAsync ( OAuthCreatingTicketContext context,
string providerName )
inlinestaticprivate

일반 OAuth 로그인 성공 시 공급자 클레임을 읽어 사용자를 저장하고 내부 클레임을 추가합니다.

매개변수
contextOAuth 티켓 생성 컨텍스트입니다.
providerName저장할 공급자 이름입니다.
반환값
사용자 저장 및 클레임 추가 작업입니다.

DreamineIdentityExtensions.cs 파일의 519 번째 라인에서 정의되었습니다.

520 {
521 var principal = context.Principal;
522 if (principal is null)
523 {
524 return;
525 }
526
527 var providerKey = principal.FindFirstValue(ClaimTypes.NameIdentifier) ?? string.Empty;
528 var email = principal.FindFirstValue(ClaimTypes.Email) ?? string.Empty;
529 var displayName = principal.FindFirstValue(ClaimTypes.Name)
530 ?? principal.FindFirstValue(ClaimTypes.GivenName)
531 ?? string.Empty;
532 var avatarUrl = principal.FindFirstValue("urn:google:picture")
533 ?? principal.FindFirstValue("picture")
534 ?? principal.FindFirstValue("urn:naver:profile_image")
535 ?? principal.FindFirstValue("profileimage")
536 ?? string.Empty;
537
538 if (string.IsNullOrEmpty(providerKey))
539 {
540 return;
541 }
542
543 await UpsertExternalUserAsync(
544 context,
545 providerName,
546 providerKey,
547 email,
548 displayName,
549 avatarUrl).ConfigureAwait(false);
550 }

다음을 참조함 : UpsertExternalUserAsync().

다음에 의해서 참조됨 : RegisterAuthServices().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnKakaoCreatingTicketAsync()

async Task Dreamine.Identity.DreamineIdentityExtensions.OnKakaoCreatingTicketAsync ( OAuthCreatingTicketContext context)
inlinestaticprivate

Kakao 사용자 정보 API를 호출하여 프로필 클레임을 만들고 사용자를 저장합니다.

매개변수
contextKakao OAuth 티켓 생성 컨텍스트입니다.
반환값
사용자 정보 조회와 저장 작업입니다.
예외
HttpRequestExceptionKakao 사용자 정보 응답이 성공 상태가 아닌 경우 발생합니다.

DreamineIdentityExtensions.cs 파일의 584 번째 라인에서 정의되었습니다.

585 {
586 if (string.IsNullOrWhiteSpace(context.AccessToken) || context.Principal?.Identity is not ClaimsIdentity identity)
587 {
588 return;
589 }
590
591 using var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
592 request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
593 request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
594
595 using var response = await context.Backchannel.SendAsync(
596 request,
597 context.HttpContext.RequestAborted).ConfigureAwait(false);
598 response.EnsureSuccessStatusCode();
599
600 await using var stream = await response.Content.ReadAsStreamAsync(context.HttpContext.RequestAborted)
601 .ConfigureAwait(false);
602 using var document = await JsonDocument.ParseAsync(
603 stream,
604 cancellationToken: context.HttpContext.RequestAborted).ConfigureAwait(false);
605
606 var root = document.RootElement;
607 var providerKey = ReadString(root, "id");
608 if (string.IsNullOrWhiteSpace(providerKey))
609 {
610 return;
611 }
612
613 var account = TryGetProperty(root, "kakao_account");
614 var profile = account.HasValue ? TryGetProperty(account.Value, "profile") : null;
615
616 var email = account.HasValue ? ReadString(account.Value, "email") : string.Empty;
617 var displayName = profile.HasValue ? ReadString(profile.Value, "nickname") : string.Empty;
618 var avatarUrl = profile.HasValue ? ReadString(profile.Value, "profile_image_url") : string.Empty;
619
620 AddClaimIfNotEmpty(identity, ClaimTypes.NameIdentifier, providerKey);
621 AddClaimIfNotEmpty(identity, ClaimTypes.Email, email);
622 AddClaimIfNotEmpty(identity, ClaimTypes.Name, displayName);
623 AddClaimIfNotEmpty(identity, "picture", avatarUrl);
624
625 await UpsertExternalUserAsync(
626 context,
627 ProviderKakao,
628 providerKey,
629 email,
630 displayName,
631 avatarUrl).ConfigureAwait(false);
632 }

다음을 참조함 : AddClaimIfNotEmpty(), ProviderKakao, ReadString(), TryGetProperty(), UpsertExternalUserAsync().

다음에 의해서 참조됨 : RegisterAuthServices().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReadString()

string Dreamine.Identity.DreamineIdentityExtensions.ReadString ( JsonElement element,
string name )
inlinestaticprivate

JSON 객체 속성의 문자열 또는 숫자 표현을 읽습니다.

매개변수
elementJSON 객체입니다.
name읽을 속성 이름입니다.
반환값
문자열 값이며 지원하지 않거나 없으면 빈 문자열입니다.

DreamineIdentityExtensions.cs 파일의 794 번째 라인에서 정의되었습니다.

795 {
796 if (element.ValueKind != JsonValueKind.Object || !element.TryGetProperty(name, out var value))
797 {
798 return string.Empty;
799 }
800
801 return value.ValueKind switch
802 {
803 JsonValueKind.String => value.GetString() ?? string.Empty,
804 JsonValueKind.Number => value.GetRawText(),
805 _ => string.Empty
806 };
807 }

다음에 의해서 참조됨 : OnKakaoCreatingTicketAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RegisterAuthServices()

void Dreamine.Identity.DreamineIdentityExtensions.RegisterAuthServices ( IServiceCollection services,
AuthOptions authOptions,
string databasePath )
inlinestaticprivate

사용자 저장소, 공유 쿠키, 구성된 OAuth 공급자 및 권한 서비스를 등록합니다.

매개변수
services등록 대상 서비스 컬렉션입니다.
authOptions인증 및 쿠키 구성입니다.
databasePath사용자 SQLite 파일 경로입니다.

DreamineIdentityExtensions.cs 파일의 401 번째 라인에서 정의되었습니다.

405 {
406 Directory.CreateDirectory(Path.GetDirectoryName(databasePath)!);
407
408 var provider = new SqliteDatabaseProvider($"Data Source={databasePath}");
409 services.AddSingleton<IDatabaseProvider>(provider);
410 services.AddSingleton<IUserStore, SqliteUserStore>();
411
412 if (!string.IsNullOrWhiteSpace(authOptions.DataProtectionKeysPath))
413 {
414 Directory.CreateDirectory(authOptions.DataProtectionKeysPath);
415 services.AddDataProtection()
416 .PersistKeysToFileSystem(new DirectoryInfo(authOptions.DataProtectionKeysPath))
417 .SetApplicationName(string.IsNullOrWhiteSpace(authOptions.DataProtectionApplicationName)
418 ? "Dreamine.Identity"
419 : authOptions.DataProtectionApplicationName);
420 }
421
422 var authBuilder = services
423 .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
424 .AddCookie(cookie =>
425 {
426 cookie.LoginPath = "/_identity/login";
427 cookie.LogoutPath = "/_identity/signout";
428 cookie.AccessDeniedPath = "/";
429 cookie.ExpireTimeSpan = TimeSpan.FromDays(30);
430 cookie.SlidingExpiration = true;
431 cookie.Cookie.Name = string.IsNullOrWhiteSpace(authOptions.CookieName)
432 ? ".Dreamine.Identity"
433 : authOptions.CookieName;
434 if (!string.IsNullOrWhiteSpace(authOptions.CookieDomain))
435 {
436 cookie.Cookie.Domain = authOptions.CookieDomain;
437 }
438 });
439
440 if (authOptions.Google.IsConfigured)
441 {
442 authBuilder.AddGoogle(google =>
443 {
444 google.ClientId = authOptions.Google.ClientId;
445 google.ClientSecret = authOptions.Google.ClientSecret;
446 google.CallbackPath = "/signin-google";
447 google.SaveTokens = false;
448 google.Events.OnCreatingTicket = context => OnCreatingTicketAsync(context, ProviderGoogle);
449 });
450 }
451
452 if (authOptions.Naver.IsConfigured)
453 {
454 authBuilder.AddNaver(naver =>
455 {
456 naver.ClientId = authOptions.Naver.ClientId;
457 naver.ClientSecret = authOptions.Naver.ClientSecret;
458 naver.CallbackPath = "/signin-naver";
459 naver.SaveTokens = false;
460 naver.Events.OnCreatingTicket = context => OnCreatingTicketAsync(context, ProviderNaver);
461 });
462 }
463
464 if (authOptions.Kakao.IsConfigured)
465 {
466 authBuilder.AddOAuth(ProviderKakao, kakao =>
467 {
468 kakao.ClientId = authOptions.Kakao.ClientId;
469 kakao.ClientSecret = authOptions.Kakao.ClientSecret;
470 kakao.CallbackPath = "/signin-kakao";
471 kakao.AuthorizationEndpoint = "https://kauth.kakao.com/oauth/authorize";
472 kakao.TokenEndpoint = "https://kauth.kakao.com/oauth/token";
473 kakao.UserInformationEndpoint = "https://kapi.kakao.com/v2/user/me";
474 kakao.SaveTokens = false;
475 // 카카오 개인 앱은 account_email 을 요청할 수 없음 (권한 없음 → KOE205).
476 // 이메일이 필요하면 카카오 개발자 콘솔에서 "추가 기능 신청" 후 스코프 추가.
477 kakao.Scope.Add("profile_nickname");
478 kakao.Scope.Add("profile_image");
479 kakao.Events.OnCreatingTicket = OnKakaoCreatingTicketAsync;
480 });
481 }
482
483 services.AddAuthorization();
484 services.AddCascadingAuthenticationState();
485 }

다음을 참조함 : Dreamine.Identity.Options.OAuthProviderOptions.ClientId, Dreamine.Identity.Options.OAuthProviderOptions.ClientSecret, Dreamine.Identity.Options.AuthOptions.CookieDomain, Dreamine.Identity.Options.AuthOptions.CookieName, Dreamine.Identity.Options.AuthOptions.DataProtectionApplicationName, Dreamine.Identity.Options.AuthOptions.DataProtectionKeysPath, Dreamine.Identity.Options.AuthOptions.Google, Dreamine.Identity.Options.OAuthProviderOptions.IsConfigured, Dreamine.Identity.Options.AuthOptions.Kakao, Dreamine.Identity.Options.AuthOptions.Naver, OnCreatingTicketAsync(), OnKakaoCreatingTicketAsync(), ProviderGoogle, ProviderKakao, ProviderNaver.

다음에 의해서 참조됨 : AddDreamineIdentityWeb().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ShouldSkipConsentGate()

bool Dreamine.Identity.DreamineIdentityExtensions.ShouldSkipConsentGate ( PathString path)
inlinestaticprivate

인증, 정적 자산 및 프레임워크 경로가 동의 게이트를 건너뛰어야 하는지 확인합니다.

매개변수
path검사할 요청 경로입니다.
반환값
게이트를 건너뛰면 true입니다.

DreamineIdentityExtensions.cs 파일의 943 번째 라인에서 정의되었습니다.

944 {
945 var value = path.Value ?? "/";
946 if (value is "/" or "")
947 {
948 return false;
949 }
950
951 if (Path.HasExtension(value))
952 {
953 return true;
954 }
955
956 return value.StartsWith("/_identity", StringComparison.OrdinalIgnoreCase) ||
957 value.StartsWith("/signin", StringComparison.OrdinalIgnoreCase) ||
958 value.StartsWith("/login", StringComparison.OrdinalIgnoreCase) ||
959 value.StartsWith("/signup", StringComparison.OrdinalIgnoreCase) ||
960 value.StartsWith("/consent", StringComparison.OrdinalIgnoreCase) ||
961 value.StartsWith("/signout", StringComparison.OrdinalIgnoreCase) ||
962 value.StartsWith("/privacy", StringComparison.OrdinalIgnoreCase) ||
963 value.StartsWith("/terms", StringComparison.OrdinalIgnoreCase) ||
964 value.StartsWith("/_blazor", StringComparison.OrdinalIgnoreCase) ||
965 value.StartsWith("/_framework", StringComparison.OrdinalIgnoreCase) ||
966 value.StartsWith("/css", StringComparison.OrdinalIgnoreCase) ||
967 value.StartsWith("/js", StringComparison.OrdinalIgnoreCase) ||
968 value.StartsWith("/img", StringComparison.OrdinalIgnoreCase) ||
969 value.StartsWith("/bootstrap", StringComparison.OrdinalIgnoreCase);
970 }

다음에 의해서 참조됨 : EnforceRequiredConsentsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryGetProperty()

? JsonElement Dreamine.Identity.DreamineIdentityExtensions.TryGetProperty ( JsonElement element,
string name )
inlinestaticprivate

JSON 객체에서 선택적 속성을 안전하게 읽습니다.

매개변수
element검사할 JSON 요소입니다.
name속성 이름입니다.
반환값
속성 값 또는 없으면 null입니다.

DreamineIdentityExtensions.cs 파일의 757 번째 라인에서 정의되었습니다.

757 =>
758 element.ValueKind == JsonValueKind.Object && element.TryGetProperty(name, out var value)
759 ? value
760 : null;

다음에 의해서 참조됨 : OnKakaoCreatingTicketAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpsertExternalUserAsync()

async Task Dreamine.Identity.DreamineIdentityExtensions.UpsertExternalUserAsync ( OAuthCreatingTicketContext context,
string providerName,
string providerKey,
string email,
string displayName,
string avatarUrl )
inlinestaticprivate

외부 로그인 사용자를 저장하고 내부 사용자 및 공급자 클레임을 현재 ID에 추가합니다.

매개변수
contextOAuth 티켓 생성 컨텍스트입니다.
providerName공급자 이름입니다.
providerKey공급자 사용자 키입니다.
email사용자 이메일입니다.
displayName사용자 표시 이름입니다.
avatarUrl프로필 이미지 URL입니다.
반환값
사용자 저장 및 클레임 추가 작업입니다.

DreamineIdentityExtensions.cs 파일의 698 번째 라인에서 정의되었습니다.

705 {
706 var principal = context.Principal;
707 if (principal?.Identity is not ClaimsIdentity identity)
708 {
709 return;
710 }
711
712 var userStore = context.HttpContext.RequestServices.GetRequiredService<IUserStore>();
713 var user = await userStore.UpsertAsync(
714 providerName,
715 providerKey,
716 email,
717 displayName,
718 avatarUrl,
719 context.HttpContext.RequestAborted).ConfigureAwait(false);
720
721 identity.AddClaim(new Claim(UserIdClaimType, user.Id.ToString()));
722 identity.AddClaim(new Claim(ProviderClaimType, providerName));
723 }

다음을 참조함 : ProviderClaimType, Dreamine.Identity.IUserStore.UpsertAsync(), UserIdClaimType.

다음에 의해서 참조됨 : OnCreatingTicketAsync(), OnKakaoCreatingTicketAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ ProviderClaimType

const string Dreamine.Identity.DreamineIdentityExtensions.ProviderClaimType = "dreamine:provider"
static

로그인 공급자 이름을 저장하는 사용자 지정 클레임 형식을 가져옵니다.

DreamineIdentityExtensions.cs 파일의 54 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : UpsertExternalUserAsync().

◆ ProviderGoogle

const string Dreamine.Identity.DreamineIdentityExtensions.ProviderGoogle = "Google"
staticprivate

Provider Google 값을 보관합니다.

DreamineIdentityExtensions.cs 파일의 64 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : RegisterAuthServices().

◆ ProviderKakao

const string Dreamine.Identity.DreamineIdentityExtensions.ProviderKakao = "Kakao"
staticprivate

Provider Kakao 값을 보관합니다.

DreamineIdentityExtensions.cs 파일의 82 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : OnKakaoCreatingTicketAsync(), RegisterAuthServices().

◆ ProviderNaver

const string Dreamine.Identity.DreamineIdentityExtensions.ProviderNaver = "Naver"
staticprivate

Provider Naver 값을 보관합니다.

DreamineIdentityExtensions.cs 파일의 73 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : RegisterAuthServices().

◆ UserIdClaimType

const string Dreamine.Identity.DreamineIdentityExtensions.UserIdClaimType = "dreamine:userid"
static

내부 사용자 ID를 저장하는 사용자 지정 클레임 형식을 가져옵니다.

DreamineIdentityExtensions.cs 파일의 44 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : EnforceRequiredConsentsAsync(), UpsertExternalUserAsync().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: