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)));
        }
Exemplo n.º 2
0
 public Task ValidatePrincipal(PlatformValidatePrincipalContext context, IPlatformService platformService)
 {
     return(Task.FromResult(platformService.CheckValid(context.Principal)));
 }