Cet article présente principalement la solution détaillée pour la coexistence des cookies de vérification des utilisateurs ASP.NET et ASP.NET Core. Il a une certaine valeur de référence et les amis intéressés peuvent s'y référer.
Lorsque vous migrez votre site de connexion utilisateur (Connexion) existant d'ASP.NET vers ASP.NET Core, vous serez confronté au problème suivant : comment connecter les utilisateurs d'ASP.NET et d'ASP.NET Core. Vérifiez que les cookies coexister et laisser les applications ASP.NET et ASP.NET Core utiliser leurs propres cookies ? Étant donné qu'ASP.NET utilise FormsAuthentication, ASP.NET Core utilise l'authentification basée sur les revendications et leurs algorithmes de chiffrement sont différents.
La solution que nous avons adoptée est de générer respectivement 2 cookies après une connexion réussie dans ASP.NET Core et de les envoyer au client en même temps.
La génération du cookie de vérification d'authentification basée sur les revendications d'ASP.NET Core est relativement simple. L'exemple de code est le suivant :
var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, loginName) }, "Basic"); var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); await context.Authentication.SignInAsync(_cookieAuthOptions.AuthenticationScheme, claimsPrincipal, new AuthenticationProperties { IsPersistent = isPersistent, ExpiresUtc = DateTimeOffset.Now.Add(_cookieAuthOptions.ExpireTimeSpan) });
Génération. Le cookie d'authentification basé sur FormsAuthentication d'ASP .NET est un peu plus gênant.
Créez d'abord un site API Web avec ASP.NET et générez des cookies basés sur FormsAuthentication. L'exemple de code est le suivant :
public IHttpActionResult GetAuthCookie(string loginName, bool isPersistent) { var cookie = FormsAuthentication.GetAuthCookie(loginName, isPersistent); return Json(new { cookie.Name, cookie.Value, cookie.Expires }); }
public class UserServiceAgent { private static readonly HttpClient _httpClient = new HttpClient(); public static async Task<Cookie> GetAuthCookie(string loginName, bool isPersistent) { var response = await _httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsAsync<Cookie>(); } }
var cookie = await _userServiceAgent.GetAuthCookie(loginName, isPersistent); var options = new CookieOptions() { Domain = _cookieAuthOptions.CookieDomain, HttpOnly = true }; if (cookie.Expires > DateTime.Now) { options.Expires = cookie.Expires; } context.Response.Cookies.Append(cookie.Name, cookie.Value, options);
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra le site Web PHP chinois.
Pour des explications plus détaillées sur les solutions de coexistence des cookies d'authentification utilisateur ASP.NET et ASP.NET Core, veuillez faire attention au site Web PHP chinois !