protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { //获取 AuthenticateResult var result = await EnsurePlatformTicket(); if (!result.Succeeded) { return(result); } //Ticket包含很多信息。调用平台接口 Check(Ticket)验证票据是否合法, 及各种跳转逻辑 var context = new PlatformValidatePrincipalContext(Context, result.Ticket, Options); if (context.Principal == null) { return(AuthenticateResult.Fail("No principal.")); } await Options.Events.ValidatePrincipal(context, _IPlatformService); _sessionKey = result.Ticket.Principal.Identity.Name; //保存User信息 if (Options.UserSessionStore != null && _sessionKey != null) { //调用接口获取User信息 var appUser = await Options.UserSessionStore.GetAsync(_sessionKey); if (appUser == null) { appUser = _IPlatformService.GetPlatformUser(_sessionKey); await Options.UserSessionStore.RenewAsync(_sessionKey, appUser); } } return(AuthenticateResult.Success(new AuthenticationTicket(context.Principal, context.Properties, Options.AuthenticationScheme))); }
public Task ValidatePrincipal(PlatformValidatePrincipalContext context, IPlatformService platformService) { return(Task.FromResult(platformService.CheckValid(context.Principal))); }