이 기사에서는 주로 ASP.NET과 ASP.NET Core 사용자 확인 쿠키의 공존을 위한 자세한 솔루션을 소개합니다. 이는 특정 참조 가치가 있으며 관심 있는 친구들이 참조할 수 있습니다.
기존 사용자 로그인(로그인) 사이트를 ASP.NET에서 ASP.NET Core로 마이그레이션할 때 ASP.NET 및 ASP.NET Core 사용자를 연결하는 방법과 같은 문제에 직면하게 됩니다. 공존하고 ASP.NET 애플리케이션과 ASP.NET Core 애플리케이션이 자체 쿠키를 사용하도록 하시겠습니까? ASP.NET은 FormsAuthentication을 사용하기 때문에 ASP.NET Core는 클레임 기반 인증을 사용하며 해당 암호화 알고리즘은 다릅니다.
저희가 채택한 솔루션은 ASP.NET Core에 로그인에 성공한 후 각각 2개의 쿠키를 생성하여 동시에 클라이언트에 보내는 것입니다.
ASP.NET Core의 클레임 기반 인증 확인 쿠키를 생성하는 것은 비교적 간단합니다. 샘플 코드는 다음과 같습니다.
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) });
ASP를 생성합니다. NET FormsAuthentication 기반 인증 쿠키는 약간 더 까다롭습니다.
먼저 ASP.NET으로 Web API 사이트를 생성하고 FormsAuthentication을 기반으로 쿠키를 생성합니다.
public IHttpActionResult GetAuthCookie(string loginName, bool isPersistent) { var cookie = FormsAuthentication.GetAuthCookie(loginName, isPersistent); return Json(new { cookie.Name, cookie.Value, cookie.Expires }); }
ASP.NET Core 로그인 사이트에서 쿠키를 얻기 위한 웹 API 클라이언트를 작성합니다. 샘플 코드는 다음과 같습니다.
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>(); } }
마지막으로 ASP.NET Core 로그인 사이트가 성공했습니다. 처리 코드는 구체적으로 ASP.NET FormsAuthentication 쿠키를 클라이언트에 보냅니다.
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);
이상이 이 글의 전체 내용입니다. 이 내용이 도움이 되기를 바라며, 모두가 PHP 중국어 웹사이트를 지지해 주시길 바랍니다.
ASP.NET과 ASP.NET Core 사용자 인증 쿠키의 공존을 위한 솔루션에 대한 자세한 설명은 PHP 중국어 웹사이트를 참고하세요!