国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Asp.Net Core 6 Cookie 的身份驗(yàn)證策略

這篇具有很好參考價(jià)值的文章主要介紹了Asp.Net Core 6 Cookie 的身份驗(yàn)證策略。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

參考文獻(xiàn):

http://www.js-code.com/xindejiqiao/xindejiqiao_274882.html

https://www.cnblogs.com/xiaoxiaotank/p/15811749.html

編寫代碼過程中不理解的代碼可參考上面的文獻(xiàn)

首先需要配置你的Program.cs,代碼如下:

 //在ASP.NET Core應(yīng)用程序中配置依賴注入容器,將 HttpContextAccessor 注冊為一個(gè)服務(wù)
        builder.Services.AddHttpContextAccessor();

        //選擇使用那種方式來身份驗(yàn)證(Cookie)
        builder.Services.AddAuthentication(option =>
        {
            option.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; //默認(rèn)身份驗(yàn)證方案Cookie
            option.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            option.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            option.DefaultForbidScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            option.DefaultSignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, option =>
        {
            option.LoginPath = "/Login/AdminLoginView";//如果沒有找到用戶信息---身份驗(yàn)證失敗--授權(quán)也失敗了---就跳轉(zhuǎn)到指定的Action
            option.AccessDeniedPath = "/Login/AdminLoginView";//訪問被拒絕就跳轉(zhuǎn)到指定的Action
        });

然后開啟中間件

// 身份認(rèn)證中間件
app.UseAuthentication();

app.UseAuthorization();

?創(chuàng)建一個(gè)AuthenticationMiddleware.cs類

private readonly RequestDelegate _next;

        public AuthenticationMiddleware(RequestDelegate next, IAuthenticationSchemeProvider schemes)
        {
            _next = next;
            Schemes = schemes;
        }

        public IAuthenticationSchemeProvider Schemes { get; set; }

        public async Task Invoke(HttpContext context)
        {
            // 記錄原始路徑和原始基路徑
            context.Features.Set<IAuthenticationFeature>(new AuthenticationFeature
            {
                OriginalPath = context.Request.Path,
                OriginalPathBase = context.Request.PathBase
            });

            // 如果有顯式指定的身份認(rèn)證方案,優(yōu)先處理(這里不用看,直接看下面)
            var handlers = context.RequestServices.GetRequiredService<IAuthenticationHandlerProvider>();
            foreach (var scheme in await Schemes.GetRequestHandlerSchemesAsync())
            {
                var handler = await handlers.GetHandlerAsync(context, scheme.Name) as IAuthenticationRequestHandler;
                if (handler != null && await handler.HandleRequestAsync())
                {
                    return;
                }
            }

            // 使用默認(rèn)的身份認(rèn)證方案進(jìn)行認(rèn)證,并賦值 HttpContext.User
            var defaultAuthenticate = await Schemes.GetDefaultAuthenticateSchemeAsync();
            if (defaultAuthenticate != null)
            {
                var result = await context.AuthenticateAsync(defaultAuthenticate.Name);
                if (result?.Principal != null)
                {
                    context.User = result.Principal;
                }
            }

            await _next(context);
        }

在寫登錄的地方去使用

Asp.Net Core 6 Cookie 的身份驗(yàn)證策略

/// <summary>
        /// 用戶登錄
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task<ResultDto<int>> AdminLogin(LoginDto dto)
        {
            try
            {
                var model = await _adminRepository.FindAsync(a => a.AdminAccount == dto.LoginName);
                if (model.AdminAccount == null)
                {
                    return new ResultDto<int>
                    {
                        code = 0,
                        data = 2,
                        msg = "用戶不存在",
                    };
                }

                bool isCode = Validate2(dto.Id, dto.ValidateCode);
                if (!isCode)
                {
                    return new ResultDto<int>
                    {
                        code = 0,
                        data = 3,
                        msg = "驗(yàn)證碼錯(cuò)誤"
                    };
                }

                if (model.AdminPassword.ToUpper() == dto.LoginPassword.Md5().ToUpper())
                {
                    var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
                    identity.AddClaims(new[]
                    {
                        new Claim(ClaimTypes.NameIdentifier,model.AdminId.ToString()),//存儲登錄的角色的AdminId
                        new Claim(ClaimTypes.Name,model.AdminName),//存儲登錄的角色的AdminName
                    });
                    var principal = new ClaimsPrincipal(identity);

                    // 登錄設(shè)置項(xiàng) 比如過期時(shí)間
                    var properties = new AuthenticationProperties
                    {
                        ExpiresUtc = DateTimeOffset.UtcNow.AddSeconds(60),
                        AllowRefresh = true
                    };

                    await _httpcontext.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, properties);

                    return new ResultDto<int>
                    {
                        code = 0,
                        data = 1,
                        msg = "登陸成功"
                    };
                }
                else
                {
                    return new ResultDto<int>
                    {
                        code = 0,
                        data = 4,
                        msg = "密碼錯(cuò)誤"
                    };
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

?最后給你的控制器加上[Authorize]特性就可以了。

Asp.Net Core 6 Cookie 的身份驗(yàn)證策略文章來源地址http://www.zghlxwxcb.cn/news/detail-605155.html

到了這里,關(guān)于Asp.Net Core 6 Cookie 的身份驗(yàn)證策略的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ASP.NET Core 鑒權(quán)授權(quán)一(簡單的Cookie)

    簡單的理解:鑒權(quán)衡量你能不能進(jìn)一道門,授權(quán)是你進(jìn)門了可以干什么

    2024年02月03日
    瀏覽(20)
  • asp.net web api 用戶身份驗(yàn)證

    ? ? ? ? 前后端分離的開發(fā)中,應(yīng)用服務(wù)需要進(jìn)行用戶身份的驗(yàn)證才允許訪問數(shù)據(jù)。實(shí)現(xiàn)的方法很簡單。創(chuàng)建一個(gè)webapi項(xiàng)目。在App_Start目錄下找到WebApiConfig.cs, 在里面增加一個(gè)實(shí)現(xiàn)類。 Controller 類的實(shí)現(xiàn):

    2024年02月20日
    瀏覽(17)
  • 【asp.net core】自定義模型綁定及其驗(yàn)證

    水此篇博客,依舊是來自群里的討論,最后說到了,在方法參數(shù)自定義了一個(gè)特性,用來綁定模型,優(yōu)先從Form取,如果為空,或者不存在,在從QueryString中獲取并且綁定,然后閑著無聊,就水一篇博客,如果大家有什么需求或者問題,可以找我,很高興能為你們帶來幫助。

    2024年02月03日
    瀏覽(28)
  • ASP.NET Core 鑒權(quán)授權(quán)三(添加自定義授權(quán)策略)

    ASP.NET Core 鑒權(quán)授權(quán)三(添加自定義授權(quán)策略)

    此處鑒權(quán)給的值是6,授權(quán)用的1,嘗試訪問 基于策略的授權(quán)中有一個(gè)很重要的概念是Requirements,每一個(gè)Requirement都代表一個(gè)授權(quán)條件。 Requirement需要繼承接口IAuthorizationRequirement。 已經(jīng)內(nèi)置了一些常用的實(shí)現(xiàn): AssertionRequirement :使用最原始的斷言形式來聲明授權(quán)策略。 DenyAn

    2024年02月03日
    瀏覽(22)
  • ASP.NET Core Web API之Token驗(yàn)證

    ASP.NET Core Web API之Token驗(yàn)證

    在實(shí)際開發(fā)中,我們經(jīng)常需要對外提供接口以便客戶獲取數(shù)據(jù),由于數(shù)據(jù)屬于私密信息,并不能隨意供其他人訪問,所以就需要驗(yàn)證客戶身份。那么如何才能驗(yàn)證客戶的什么呢?今天以一個(gè)簡單的小例子,簡述ASP.NET Core Web API開發(fā)過程中,常用的一種JWT身份驗(yàn)證方式。僅供學(xué)

    2024年02月11日
    瀏覽(22)
  • ASP.NET Core 鑒權(quán)授權(quán)三(自定義授權(quán)策略、多授權(quán)策略、多鑒權(quán)架構(gòu))

    ASP.NET Core 鑒權(quán)授權(quán)三(自定義授權(quán)策略、多授權(quán)策略、多鑒權(quán)架構(gòu))

    此處鑒權(quán)給的值是6,授權(quán)用的1,嘗試訪問 基于策略的授權(quán)中有一個(gè)很重要的概念是Requirements,每一個(gè)Requirement都代表一個(gè)授權(quán)條件。 Requirement需要繼承接口IAuthorizationRequirement。 已經(jīng)內(nèi)置了一些常用的實(shí)現(xiàn): AssertionRequirement :使用最原始的斷言形式來聲明授權(quán)策略。 DenyAn

    2024年02月03日
    瀏覽(34)
  • ASP.NET CORE WEBAPI 登錄 JWT 鑒權(quán) ,接口權(quán)限驗(yàn)證

    介紹 當(dāng)今Web開發(fā)中,API的使用越來越廣泛,而API的安全性也變得越來越重要。其中,JWT(JSON Web Token)鑒權(quán)和授權(quán)是一種常見的解決方案。 本篇文章將會介紹JWT鑒權(quán)和授權(quán)的原理、實(shí)現(xiàn)方式以及注意事項(xiàng)。 什么是JWT? JWT是一種基于JSON格式的開放標(biāo)準(zhǔn)(RFC7519),用于在網(wǎng)絡(luò)

    2023年04月21日
    瀏覽(87)
  • ASP.NET Core使用JWT+標(biāo)識框架(identity)實(shí)現(xiàn)登錄驗(yàn)證

    ASP.NET Core使用JWT+標(biāo)識框架(identity)實(shí)現(xiàn)登錄驗(yàn)證

    最近閱讀了《ASP.NET Core 技術(shù)內(nèi)幕與項(xiàng)目實(shí)戰(zhàn)——基于DDD與前后端分離》(作者楊中科)的第八章,對于Core入門的我來說體會頗深,整理相關(guān)筆記。 JWT:全稱“JSON web toke”,目前流行的跨域身份驗(yàn)證解決方案; 標(biāo)識框架(identity):由ASP.NET Core提供的框架,它采用RBAC(role

    2024年02月11日
    瀏覽(25)
  • ASP.NET Core 6框架揭秘實(shí)例演示[38]:兩種不同的限流策略

    ASP.NET Core 6框架揭秘實(shí)例演示[38]:兩種不同的限流策略

    承載ASP.NET應(yīng)用的服務(wù)器資源總是有限的,短時(shí)間內(nèi)涌入過多的請求可能會瞬間耗盡可用資源并導(dǎo)致宕機(jī)。為了解決這個(gè)問題,我們需要在服務(wù)端設(shè)置一個(gè)閥門將并發(fā)處理的請求數(shù)量限制在一個(gè)可控的范圍,即使會導(dǎo)致請求的延遲響應(yīng),在極端的情況會還不得不放棄一些請求。

    2024年02月08日
    瀏覽(24)
  • 在Keycloak中實(shí)現(xiàn)多租戶并在ASP.NET Core下進(jìn)行驗(yàn)證

    在Keycloak中實(shí)現(xiàn)多租戶并在ASP.NET Core下進(jìn)行驗(yàn)證

    Keycloak是一個(gè)功能強(qiáng)大的開源身份和訪問管理系統(tǒng),提供了一整套解決方案,包括用戶認(rèn)證、單點(diǎn)登錄(SSO)、身份聯(lián)合、用戶注冊、用戶管理、角色映射、多因素認(rèn)證和訪問控制等。它廣泛應(yīng)用于企業(yè)和云服務(wù),可以簡化和統(tǒng)一不同應(yīng)用程序和服務(wù)的安全管理,支持自托管

    2024年04月08日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包