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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无人影院免费观看 | 亚洲AV久久无码精品蜜桃 | 国产美女极品免费视频 | 国产ay | 互换身体全集免费观看 | 欧美在线欧美 | 海绵宝宝第二季全集免费观看 | 欧美日韩亚洲国内综合网香蕉 | 2018高清国产一道国产 | 国产成+人+综合+欧美 亚洲 | 国产小视频网站 | np高h疯狂黄暴宫口 narutomanga玖辛奈之乳 | 国产黄色大片网站 | 国产成人综合一区人人 | 男女羞羞的视频 | 莫莉瑞典1977k | 农村老妇1乱69系列小说 | 国产欧美日韩成人 | 欧美色图亚洲天堂 | 男生操男生 | 99视频网址 | 欧美日韩国产一区二区三区在线观看 | 无限资源在线观看8 | 91麻豆精品国产片在线观看 | 国产玖玖在线 | 色吊丝每日永久访问网站 | 欧美视频一区二区三区四区 | 天天综合色天天综合色sb | 日本一区二区三区国产 | 色天天综合色天天看 | 国产一区视频在线免费观看 | 男同gay玩奴男同玩奴 | 扒开女人下面使劲桶屁股动漫 | 午夜神器老司机高清无码 | 国产a免费观看 | 富士av105 | 男人天堂中文字幕 | 韩国久播影院理论片不卡影院 | 久久久久久久久人体 | 99热在线只有精品 | 精品国产一二三区在线影院 |