ASP.NET 및 ASP.NET Core 사용자 인증 쿠키에 대한 공존 솔루션에 대한 자세한 설명

高洛峰
풀어 주다: 2017-02-20 17:13:03
원래의
1472명이 탐색했습니다.

이 기사에서는 주로 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 중국어 웹사이트를 참고하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿