婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

    asp.net core中如何使用cookie身份驗(yàn)證

     2020-12-31 16:59  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

      阿里云優(yōu)惠券 先領(lǐng)券再下單

    這篇文章主要介紹了asp.net core中如何使用cookie身份驗(yàn)證的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

    背景

    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)訪問(wè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 以登錄用戶:

    /// <summary>
    ///
    /// </summary>
    /// <param name="model"></param>
    /// <param name="returnUrl"></param>
    /// <returns></returns>
    [HttpPost]
    [AllowAttribute]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> 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<Claim>
    {
    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:

    /// <summary>
    ///
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> 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");
    }
    }

    參考資料

    https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/?view=aspnetcore-5.0

    到此這篇關(guān)于asp.net core中如何使用cookie身份驗(yàn)證的文章就介紹到這了,更多相關(guān)asp.net core用cookie身份驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

    來(lái)源:腳本之家

    鏈接:https://www.jb51.net/article/202963.htm

    申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

    相關(guān)文章

    熱門排行

    信息推薦