欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年02月15日 17:05:25   作者:dudu  
本篇文章主要介紹了詳解ASP.NET與ASP.NET Core用戶驗證Cookie并存解決方案 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

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

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

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

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創(chuàng)建一個Web API站點,基于FormsAuthentication生成Cookie,示例代碼如下:

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,示例代碼如下:

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登錄站點的登錄成功后的處理代碼中專門向客戶端發(fā)送ASP.NET FormsAuthentication的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);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解.net core webapi 前后端開發(fā)分離后的配置和部署

    詳解.net core webapi 前后端開發(fā)分離后的配置和部署

    這篇文章主要介紹了.net core webapi 前后端開發(fā)分離后的配置和部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 利用ASP.NET MVC和Bootstrap快速搭建個人博客之后臺dataTable數(shù)據(jù)列表

    利用ASP.NET MVC和Bootstrap快速搭建個人博客之后臺dataTable數(shù)據(jù)列表

    jQuery dataTables 插件是一個優(yōu)秀的表格插件,應(yīng)用非常廣泛,本文給大家介紹利用ASP.NET MVC和Bootstrap快速搭建個人博客之后臺dataTable數(shù)據(jù)列表,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-07-07
  • 基于.net4.0實現(xiàn)IdentityServer4客戶端JWT解密

    基于.net4.0實現(xiàn)IdentityServer4客戶端JWT解密

    這篇文章主要為大家詳細介紹了基于.net4.0實現(xiàn)IdentityServer4客戶端JWT解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • asp.net 臨時數(shù)據(jù)保存實現(xiàn)代碼

    asp.net 臨時數(shù)據(jù)保存實現(xiàn)代碼

    在一個程序運行的時候往往我們會回到上一個頁面,或者我們會需要當時留在這個頁面的臨時數(shù)據(jù),例如,我們用百度搜索“腳本”之后我們會看到很多那啥我就不再說了啊!然后我們返回本來頁面在文本框內(nèi)會有“腳本”的字樣,我們一下代碼段就是實現(xiàn)這個功能
    2012-04-04
  • jQuery+Asp.Net實現(xiàn)省市二級聯(lián)動功能的方法

    jQuery+Asp.Net實現(xiàn)省市二級聯(lián)動功能的方法

    這篇文章主要介紹了jQuery+Asp.Net實現(xiàn)省市二級聯(lián)動功能的方法,涉及asp.net數(shù)據(jù)庫讀取與字符串轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • .Net Core中使用ExceptionFilter過濾器的方法

    .Net Core中使用ExceptionFilter過濾器的方法

    這篇文章主要介紹了.Net Core中使用ExceptionFilter過濾器的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • MVC+EasyUI+三層新聞網(wǎng)站建立 實現(xiàn)登錄功能(四)

    MVC+EasyUI+三層新聞網(wǎng)站建立 實現(xiàn)登錄功能(四)

    這篇文章主要為大家詳細介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第四篇,教大家實現(xiàn)登錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 獲取客戶端IP地址c#/vb.net各自實現(xiàn)代碼

    獲取客戶端IP地址c#/vb.net各自實現(xiàn)代碼

    項目要求獲取客戶端的IP地址,分析并且用c#與vb各自實現(xiàn)了此要求,有需要的朋友可以了解下啊,希望本文對你們有所幫助
    2013-01-01
  • ASP.NET Core按用戶等級授權(quán)的方法

    ASP.NET Core按用戶等級授權(quán)的方法

    這篇文章主要介紹了ASP.NET Core按用戶等級授權(quán),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • ASP.NET GridView控件在列上格式化時間及DataFormatString使用

    ASP.NET GridView控件在列上格式化時間及DataFormatString使用

    在GridView綁定日期格式的時候,數(shù)據(jù)庫中的日期為2008-07-04,而GridView顯示的是2007-07-04 000000,多了后面一截很不美觀,想把它去掉不知道有什么好的方法,感興趣的朋友可以了解本文,或許對你有所幫助
    2013-01-01

最新評論