一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 詳解ASP.NET與ASP.NET Core用戶驗證Cookie并存解決方案

詳解ASP.NET與ASP.NET Core用戶驗證Cookie并存解決方案

2020-04-21 13:38dudu ASP.NET教程

本篇文章主要介紹了詳解ASP.NET與ASP.NET Core用戶驗證Cookie并存解決方案 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

在你將現有的用戶登錄(Sign In)站點從ASP.NET遷移至ASP.NET Core時,你將面臨這樣一個問題——如何讓ASP.NET與ASP.NET Core用戶驗證Cookie并存,讓ASP.NET應用與ASP.NET Core應用分別使用各自的Cookie?因為ASP.NET用的是FormsAuthentication,ASP.NET Core用的是claims-based authentication,而且它們的加密算法不一樣。

我們采取的解決方法是在ASP.NET Core中登錄成功后,分別生成2個Cookie,同時發送給客戶端。

生成ASP.NET Core的基于claims-based authentication的驗證Cookie比較簡單,示例代碼如下:

?
1
2
3
4
5
6
7
8
9
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的驗證Cookie稍微麻煩些。

首先要用ASP.NET創建一個Web API站點,基于FormsAuthentication生成Cookie,示例代碼如下:

?
1
2
3
4
5
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登錄站點中寫一個Web API客戶端獲取Cookie,示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
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的Cookie,示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
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);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/dudu/p/6368240.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本www视频在线观看 | 动漫jk美女被爆羞羞漫画 | 五月婷婷伊人网 | 天堂欧美 | 亚洲精品老司机福利在线播放 | 91视频a| 欧美久久久久久久一区二区三区 | 秋霞理论在一l级毛片 | 久久久大香菇 | 午夜DV内射一区区 | 欧美性xxxxx| 日本免费观看的视频在线 | 能播放的欧美同性videos | 国产成人精品福利色多多 | 亚洲精品久久久打桩机 | 女人张开腿让男人桶爽 | 91免费在线| 日本红色高清免费观看 | 久久99精品国产自在自线 | 91无套极品外围在线播放 | 国产宅男| 亚洲国产成人精品无码区APP | 2022国产麻豆剧传媒古装 | 嫩交18xxxx | 成人性爱视频在线观看 | 莫莉瑞典1977k| 动漫美女羞羞 | 亚洲热在线视频 | 国产91精选在线观看麻豆 | 国产精品理论片在线观看 | 天天操天天爽天天射 | 人与禽交3d动漫羞羞动漫 | 日本韩国推理片免费观看网站 | 精品无码国产AV一区二区三区 | 高清欧美videossexo免费 | 国模大胆一区二区三区 | 天天综合天天色 | 亚洲精品91在线 | 91久久国产青草亚洲 | 亚洲视频第一页 | 精品蜜臀AV在线天堂 |