Пример #1
0
        /// <summary>
        /// 构建退出视图模型
        /// </summary>
        /// <param name="logoutId"></param>
        /// <returns></returns>
        private async Task <Idr4LogoutViewModel> CreateIdr4LogoutViewModelAsync(string logoutId)
        {
            var vm = new Idr4LogoutViewModel {
                LogoutId = logoutId, ShowLogoutPrompt = AccountOptions.ShowLogoutPrompt
            };

            var user = _httpContextAccessor.HttpContext.User;

            if (user?.Identity.IsAuthenticated != true)
            {
                //没有授权展示已退出相关业务处理页面
                vm.ShowLogoutPrompt = false;
            }

            var context = await _identityServerInteractionService.GetLogoutContextAsync(logoutId);

            if (context?.ShowSignoutPrompt == false)
            {
                //用户处理退出  安全退出到退出业务处理页面
                vm.ShowLogoutPrompt = false;
            }
            if (!vm.ShowLogoutPrompt)
            {
                string clientid    = context.ClientIds.FirstOrDefault();
                var    clientModel = await _clientStore.FindClientByIdAsync(clientid);

                vm.PostLogoutRedirectUri = clientModel?.PostLogoutRedirectUris.FirstOrDefault();
                vm.SignOutIFrameUrl      = context.SignOutIFrameUrl;
            }

            return(vm);
        }
Пример #2
0
        public async Task <IActionResult> Logout(Idr4LogoutViewModel model)
        {
            var vm = await _identityServerInteractionService.GetLogoutContextAsync(model.LogoutId);

            return(View());
        }
Пример #3
0
 public IActionResult LoggedOut(Idr4LogoutViewModel model)
 {
     return(View(model));
 }