添加项目文件。

This commit is contained in:
Zel
2025-01-22 23:31:03 +08:00
parent 1b8ba6771f
commit 2ae76476fb
894 changed files with 774558 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable disable
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
namespace TightWiki.Areas.Identity.Pages.Account
{
public class LogoutModel : PageModelBase
{
private readonly SignInManager<IdentityUser> _signInManager;
private readonly ILogger<LogoutModel> _logger;
private readonly IAuthenticationSchemeProvider _schemeProvider;
private readonly UserManager<IdentityUser> _userManager;
public LogoutModel(SignInManager<IdentityUser> signInManager, UserManager<IdentityUser> userManager, ILogger<LogoutModel> logger, IAuthenticationSchemeProvider schemeProvider)
: base(signInManager)
{
_schemeProvider = schemeProvider;
_signInManager = signInManager;
_userManager = userManager;
_logger = logger;
}
public async Task<IActionResult> OnPost(string returnUrl = null)
{
await _signInManager.SignOutAsync();
/*
var allSchemes = await _schemeProvider.GetAllSchemesAsync();
foreach (var scheme in allSchemes)
{
try
{
await HttpContext.SignOutAsync(scheme.Name);
}
catch
{
}
}
*/
/*
// Explicitly delete the cookie with the correct path.
Response.Cookies.Delete(".AspNetCore.Identity.Application", new CookieOptions
{
Path = "/TightWiki", // Must match the cookie's path.
HttpOnly = true,
Secure = true // Use this if the cookie is secure.
});
*/
/*
if (HttpContext.Request.Cookies.Count > 0)
{
var siteCookies = HttpContext.Request.Cookies
.Where(c => c.Key.Contains(".AspNetCore.")
|| c.Key.Contains("Microsoft.Authentication"));
foreach (var cookie in siteCookies)
{
Response.Cookies.Delete(cookie.Key);
}
}
await HttpContext.SignOutAsync(
user.AuthenticationScheme);
HttpContext.Session.Clear();
await _signInManager.SignOutAsync();
await HttpContext.SignOutAsync();
var allSchemes = await _schemeProvider.GetAllSchemesAsync();
foreach (var scheme in allSchemes)
{
try
{
await HttpContext.SignOutAsync(scheme.Name);
}
catch
{
}
}
foreach (var cookie in Request.Cookies.Keys)
{
Response.Cookies.Delete(cookie);
}
*/
_logger.LogInformation("User logged out.");
if (returnUrl != null)
{
return LocalRedirect(returnUrl);
}
else
{
// This needs to be a redirect so that the browser performs a new
// request and the identity for the user gets updated.
return RedirectToPage();
}
}
}
}