真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Asp.netcore中怎么使用cookie驗(yàn)證身份

今天就跟大家聊聊有關(guān)Asp.net core中怎么使用cookie驗(yàn)證身份,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

在楊浦等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),楊浦網(wǎng)站建設(shè)費(fèi)用合理。

ASP.NET Core Identity 是一個(gè)完整的全功能身份驗(yàn)證提供程序,用于創(chuàng)建和維護(hù)登錄名。 但是, cookie  不能使用基于的身份驗(yàn)證提供程序 ASP.NET Core Identity 。

配置

在 Startup.ConfigureServices 方法中,創(chuàng)建具有 AddAuthentication 和 AddCookie  方法的身份驗(yàn)證中間件服務(wù):

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
app.UseAuthentication();

AuthenticationScheme 傳遞到 AddAuthentication 設(shè)置應(yīng)用程序的默認(rèn)身份驗(yàn)證方案。如果有多個(gè) cookie  身份驗(yàn)證實(shí)例,并且你想要使用特定方案進(jìn)行授權(quán),AuthenticationScheme 會(huì)很有用。將 AuthenticationScheme  設(shè)置為CookieAuthenticationDefaults。AuthenticationScheme為方案提供值  "cookie"??梢蕴峁┤魏斡糜趨^(qū)分方案的字符串值。

應(yīng)用的身份驗(yàn)證方案不同于應(yīng)用的 cookie 身份驗(yàn)證方案。如果未向 AddCookie提供 cookie 身份驗(yàn)證方案,則使用  CookieAuthenticationDefaults.AuthenticationScheme ("Cookie")。

默認(rèn)情況下,身份驗(yàn)證 cookie 的 IsEssential 屬性設(shè)置為 true。當(dāng)站點(diǎn)訪問者未同意數(shù)據(jù)收集時(shí),允許使用身份驗(yàn)證  cookie。

登錄

若要?jiǎng)?chuàng)建保存用戶信息的 cookie,請(qǐng)構(gòu)造一個(gè) ClaimsPrincipal。將對(duì)用戶信息進(jìn)行序列化并將其存儲(chǔ)在 cookie 中。

使用任何所需的 Claim創(chuàng)建 ClaimsIdentity,并調(diào)用 SignInAsync 以登錄用戶:

///          ///         ///          ///          ///          ///          [HttpPost]         [AllowAttribute]         [ValidateAntiForgeryToken]         public async Task Login(LoginModel model, string returnUrl = null)         {             if (!ModelState.IsValid)             {                 return Json(new { state = "error", message = "數(shù)據(jù)驗(yàn)證失敗" });             }             string ip = GetRemoteIpAddress();             var r = await UserApp.SaasLoginAsync(model.Account, model.Password, ip);             if (!string.IsNullOrEmpty(r.Error))             {                 return Json(new { state = "error", message = r.Error });             }             var claims = new List                                         {                                             new Claim(ClaimTypes.UserData, getCurrentUser(r.User, ip).ToString()),                                         };             var claimsIdentity = new ClaimsIdentity(                 claims, CookieAuthenticationDefaults.AuthenticationScheme);             var authProperties = new AuthenticationProperties             {                 ExpiresUtc = DateTimeOffset.Now.AddMinutes(120)             };             await HttpContext.SignInAsync(                 CookieAuthenticationDefaults.AuthenticationScheme,                 new ClaimsPrincipal(claimsIdentity),                 authProperties);             return Json(new { state = "success", message = "登錄成功。", returnUrl = RedirectToLocal(returnUrl) });         }

SignInAsync 創(chuàng)建加密的 cookie,并將其添加到當(dāng)前響應(yīng)中。如果未指定 AuthenticationScheme,則使用默認(rèn)方案。

ASP.NET Core 的數(shù)據(jù)保護(hù)系統(tǒng)用于加密。對(duì)于托管在多臺(tái)計(jì)算機(jī)上的應(yīng)用程序、跨應(yīng)用程序或使用 web  場(chǎng)進(jìn)行負(fù)載平衡,請(qǐng)將數(shù)據(jù)保護(hù)配置為使用相同的密鑰環(huán)和應(yīng)用程序標(biāo)識(shí)符。

注銷

若要注銷當(dāng)前用戶并刪除其 cookie,請(qǐng)調(diào)用 SignOutAsync:

///          ///         ///          ///          [HttpPost]         [ValidateAntiForgeryToken]         public async Task LogOff()         {             if (bool.Parse(Configuration.GetSection("IsIdentity").Value))             {                 return SignOut("Cookies", "oidc");             }             else             {                 if (User.Identity.IsAuthenticated)                 {                     string userdata = User.Claims.FirstOrDefault(o => o.Type == ClaimTypes.UserData)?.Value;                     await UserApp.LogOffAsync(CurrentUser.FromJson(userdata));                 }                 await HttpContext.SignOutAsync(                  CookieAuthenticationDefaults.AuthenticationScheme);                 return RedirectToAction(actionName: nameof(Login), controllerName: "Account");             }         }

看完上述內(nèi)容,你們對(duì)Asp.net core中怎么使用cookie驗(yàn)證身份有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


標(biāo)題名稱:Asp.netcore中怎么使用cookie驗(yàn)證身份
文章路徑:http://weahome.cn/article/gejscs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部