黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

asp.net core 認證和授權實例詳解

瀏覽:370日期:2022-06-08 10:52:40
目錄
  • 正文
    • 認證是什么?
    • 授權是什么?
    • 認證和授權的關系?

正文

使用asp.net core 開發應用系統過程中,基本上都會涉及到用戶身份的認證,及授權訪問控制,因此了解認證和授權流程也相當重要,下面通過分析asp.net core 框架中的認證和授權的源碼來分析認證、授權的原理及認證和授權的關系。

認證是什么?

認證是應用系統識別當前訪問者的身份的一個過程,當應用系統接收到瀏覽器的請求后,通常會根據請求中攜帶的一些用戶的的關鍵信息來識別當前登錄用戶的身份,通過解析這些信息,對用戶進行合法性校驗并進行解密,如果校驗通過,則表示認證通過,應用系統會將認證通過后的用戶信息存儲到Http請求上下文中,以便后續業務使用及授權流程中使用。

asp.net core中通常將認證信息加密后存儲到cookie中,每次訪問需要認證的頁面時將這些cookie信息發送到應用系統,以便應用系統識別訪問者的身份,也就是經典的Cookie認證。

需要注意的是:認證僅僅只是識別當前訪問用戶的身份,并不負責具體的訪問權限控制邏輯,如不具備某個資源的訪問權限返回403,未登錄返回401等,這些均由授權流程來控制。

asp.net core 中負責認證流程的中間件是AuthenticationMiddleware 類,以下是asp.net core 3.1 的源代碼,可以看到,先遍歷所有實現了IAuthenticationRequestHandler接口的認證方案,并調用IAuthenticationRequestHandler接口的HandleRequestAsync方法,如果認證通過,則不再繼續往下執行,并且此時HttpContext.User已經包含認證后的用戶信息,如果所有實現 IAuthenticationRequestHandler 接口的認證方案,都未能對當前訪問用戶進行身份認證,則使用默認的認證方案進行認證(也就是:GetDefaultAuthenticateSchemeAsync返回的認證方案),可以看到認證流程即使沒能識別當前訪問者的用戶身份,也會繼續執行下一個流程,(尾部:await _next(context);)

public class AuthenticationMiddleware
{
	private readonly RequestDelegate _next;
	public IAuthenticationSchemeProvider Schemes
	{
		get;
		set;
	}
	public AuthenticationMiddleware(RequestDelegate next, IAuthenticationSchemeProvider schemes)
	{
		if (next == null)
		{
			throw new ArgumentNullException("next");
		}
		if (schemes == null)
		{
			throw new ArgumentNullException("schemes");
		}
		_next = next;
		Schemes = schemes;
	}
	public async Task Invoke(HttpContext context)
	{
		context.Features.Set((IAuthenticationFeature)new AuthenticationFeature
		{
			OriginalPath = context.Request.Path,
			OriginalPathBase = context.Request.PathBase
		});
		IAuthenticationHandlerProvider handlers = context.RequestServices.GetRequiredService<IAuthenticationHandlerProvider>();
		foreach (AuthenticationScheme item in await Schemes.GetRequestHandlerSchemesAsync())
		{
			IAuthenticationRequestHandler authenticationRequestHandler = (await handlers.GetHandlerAsync(context, item.Name)) as IAuthenticationRequestHandler;
			bool flag = authenticationRequestHandler != null;
			if (flag)
			{
				flag = await authenticationRequestHandler.HandleRequestAsync();
			}
			if (flag)
			{
				return;
			}
		}
		AuthenticationScheme authenticationScheme = await Schemes.GetDefaultAuthenticateSchemeAsync();
		if (authenticationScheme != null)
		{
//內部調用IAuthenticationService進行認證。
			AuthenticateResult authenticateResult = await context.AuthenticateAsync(authenticationScheme.Name);
			if (authenticateResult?.Principal != null)
			{
				context.User = authenticateResult.Principal;
			}
		}
		await _next(context);
	}
}

授權是什么?

授權是確定當前訪問用戶是否具備訪問某個系統資源權限的過程,對于需要授權才能訪問的系統資源,通常通過[Authorize]特性來標識,通過該特性,可以指定該資源需要哪個用戶角色才能訪問、必須符合哪個授權策略才能訪問,以及訪問該資源時采用的用戶認證方案是什么,當用戶訪問系統的某個API或者頁面時,授權流程會檢查當前用戶是否具備該API或者頁面的訪問權限,如果授權檢查失敗,那么會判斷當前用戶是否已經認證通過,如果認證通過,但無訪問該資源的權限,那么返回403(禁止訪問),如果未認證,那么直接返回401(未認證),表示需要用戶登錄認證后在進行訪問,需要注意的是:檢查是否具備訪問權限之前會先進行用戶身份的認證,至于用什么認證方案就看AuthorizeAttribute有沒有指定特定的認證方案,如果沒有,則直接采用認證流程的認證成功的身份信息。

asp.net core 中,授權流程的執行是通過AuthorizationMiddleware類來完成的,以下是asp.net core 3.1中的源碼。

// Microsoft.AspNetCore.Authorization.AuthorizationMiddleware
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Policy;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
public class AuthorizationMiddleware
{
	private const string AuthorizationMiddlewareInvokedWithEndpointKey = "__AuthorizationMiddlewareWithEndpointInvoked";
	private static readonly object AuthorizationMiddlewareWithEndpointInvokedValue = new object();
	private readonly RequestDelegate _next;
	private readonly IAuthorizationPolicyProvider _policyProvider;
	public AuthorizationMiddleware(RequestDelegate next, IAuthorizationPolicyProvider policyProvider)
	{
		_next = next ?? throw new ArgumentNullException("next");
		_policyProvider = policyProvider ?? throw new ArgumentNullException("policyProvider");
	}
	public async Task Invoke(HttpContext context)
	{
		if (context == null)
		{
			throw new ArgumentNullException("context");
		}
		Endpoint endpoint = context.GetEndpoint();
		if (endpoint != null)
		{
			context.Items["__AuthorizationMiddlewareWithEndpointInvoked"] = AuthorizationMiddlewareWithEndpointInvokedValue;
		}
//獲取訪問當前資源所需要的所有角色權限,及授權策略,以及訪問該資源時需要使用的認證方案列表,并統一合并到一個AuthorizationPolicy對象中。
		IReadOnlyList<IAuthorizeData> authorizeData = endpoint?.Metadata.GetOrderedMetadata<IAuthorizeData>() ?? Array.Empty<IAuthorizeData>();
		AuthorizationPolicy policy = await AuthorizationPolicy.CombineAsync(_policyProvider, authorizeData);
		if (policy == null)
		{
			await _next(context);
			return;
		}
		IPolicyEvaluator policyEvaluator = context.RequestServices.GetRequiredService<IPolicyEvaluator>();
//通過IPolicyEvaluator.AuthenticateAsync()方法,對當前訪問者進行認證,至于使用哪種方案認證,根據該資源要求使用的認證方案來,如果沒有指定,
//則使用默認認證方案進行認證。
		AuthenticateResult authenticationResult = await policyEvaluator.AuthenticateAsync(policy, context);
//如果包含實現了IAllowAnonymous接口的特性,則不進行授權檢查。
		if (endpoint?.Metadata.GetMetadata<IAllowAnonymous>() != null)
		{
			await _next(context);
			return;
		}
//這里調用AuthorizeAsync進行授權檢查,注意,這里將上一步認證結果authenticationResult也傳到了授權檢查方法內部。
		PolicyAuthorizationResult policyAuthorizationResult = await policyEvaluator.AuthorizeAsync(policy, authenticationResult, context, endpoint);
		//檢查授權結果,如果是未登錄,則返回401未認證,讓用戶進行登錄,如果該資源指定了特定的認證方案,則調用特定認證方案的Challenge方法,
//否則調用默認認證方案的Challenge方法,通常Challenge做的事情就是重定向用戶的瀏覽器到登錄頁面或者對于ajax異步請求返回401.
if (policyAuthorizationResult.Challenged)
		{
			if (policy.AuthenticationSchemes.Any())
			{
				foreach (string authenticationScheme in policy.AuthenticationSchemes)
				{
					await context.ChallengeAsync(authenticationScheme);
				}
			}
			else
			{
				await context.ChallengeAsync();
			}
		}
//如果當前訪問者用戶身份認證通過,但是不被允許訪問該資源的權限,那么默認返回401(禁止訪問)給瀏覽器端,通常對于未授權的訪問請求,應用常常的做法是將用戶的瀏覽器重定向到禁止訪問的提示頁面,或者對于ajax異步請求來說,通常返回403狀態碼,和上面未認證情況一樣,如果該資源指定了特定的認證方案,那么會調用特定認證方案的Forbid方法,否則調用默認認證方案的Forbid方法。
		else if (policyAuthorizationResult.Forbidden)
		{
			if (policy.AuthenticationSchemes.Any())
			{
				foreach (string authenticationScheme2 in policy.AuthenticationSchemes)
				{
					await context.ForbidAsync(authenticationScheme2);
				}
			}
			else
			{
				await context.ForbidAsync();
			}
		}
		else
		{
			await _next(context);
		}
	}
}

IPolicyEvaluator接口實現類 PolicyEvaluator類代碼如下,該類主要是負責授權流程中的認證和授權。

// Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluator
using System;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Policy;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Internal;
public class PolicyEvaluator : IPolicyEvaluator
{
	private readonly IAuthorizationService _authorization;
	public PolicyEvaluator(IAuthorizationService authorization)
	{
		_authorization = authorization;
	}
	public virtual async Task<AuthenticateResult> AuthenticateAsync(AuthorizationPolicy policy, HttpContext context)
	{
//這里去判斷當前資源是否有要求特定的認證方案進行認證,如果有指定特定的認證方案,則分別對每個認證方案進行認證,并把認證后的用戶信息進行合并
//最終存儲到HttpContext.User屬性中,并返回認證成功,如果沒有指定認證方案,則使用認證流程中已經認證的用戶信息作為認證結果返回,
//從這里可以看出,認證流程還是很有必要的,在資源沒有指定認證方案的前提下,認證流程為授權流程提供當前訪問者的身份信息,以便執行是否具備相應資源的訪問權限檢查,否則就直接進入Challenge流程將要求用戶先進行身份認證了
		if (policy.AuthenticationSchemes != null && policy.AuthenticationSchemes.Count > 0)
		{
			ClaimsPrincipal newPrincipal = null;
			foreach (string authenticationScheme in policy.AuthenticationSchemes)
			{
				AuthenticateResult authenticateResult = await context.AuthenticateAsync(authenticationScheme);
				if (authenticateResult != null && authenticateResult.Succeeded)
				{
					newPrincipal = SecurityHelper.MergeUserPrincipal(newPrincipal, authenticateResult.Principal);
				}
			}
			if (newPrincipal != null)
			{
				context.User = newPrincipal;
				return AuthenticateResult.Success(new AuthenticationTicket(newPrincipal, string.Join(";", policy.AuthenticationSchemes)));
			}
			context.User = new ClaimsPrincipal(new ClaimsIdentity());
			return AuthenticateResult.NoResult();
		}
		return (context.User?.Identity?.IsAuthenticated).GetValueOrDefault() ? AuthenticateResult.Success(new AuthenticationTicket(context.User, "context.User")) : AuthenticateResult.NoResult();
	}
//resource為EndPoint對象。
	public virtual async Task<PolicyAuthorizationResult> AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object resource)
	{
		if (policy == null)
		{
			throw new ArgumentNullException("policy");
		}
//這里調用IAuthorizationService.AuthorizeAsync方法進行授權檢查,默認實現類為:DefaultAuthorizationService。
		if ((await _authorization.AuthorizeAsync(context.User, resource, policy)).Succeeded)
		{
			return PolicyAuthorizationResult.Success();
		}
//下面這句表示如果授權檢查失敗的情況下是進入Forbid流程還是進入Challenge流程,可以看到如果認證成功,那么表示無權限訪問進入Forbid流程。
//如果未認證,則進入Challenge流程,引導用戶登錄認證。
		return authenticationResult.Succeeded ? PolicyAuthorizationResult.Forbid() : PolicyAuthorizationResult.Challenge();
	}
}

認證和授權的關系?

授權檢查之前都會先執行用戶身份的認證,不過這里的認證流程只有在被訪問的資源有指定特定的認證方案時才會執行,否則直接采用統一認證流程中的產生的認證信息。

可以理解為認證流程一方面是為了告訴應用系統當前訪問者的身份,一方面是為了給授權檢查時識別用戶的身份信息,當資源沒有指定采用何種認證方案時,授權流程將會采用統一認證流程里認證通過產生的用戶信息,如果不啟用認證流程,并且被訪問的資源也沒有指定特定的認證方案對訪問者身份進行認證時,那么最終訪問該資源時還是會被要求先登錄認證,因此認證流程的另外一個用途就是為授權流程提供默認的用戶認證信息。

總結起來說,

認證流程主要有如下幾個作用:

  • 識別系統訪問者的身份信息,認證通過后提供給后續業務使用。
  • 給授權流程提供訪問者身份信息(資源沒有指定特定認證方案時,采用默認認證方案認證通過的用戶信息)。
  • 實現授權失敗后的處理邏輯,比如授權檢查失敗后返回的 401(未認證),403(禁止訪問)等最終都是認證方案的 ChallegeAsync方法以及ForbidAsync方法來處理,這些方法是IAuthenticationHandler里面定義的,這些流程在授權失敗為401/403的時候分別被授權流程調用。

授權流程主要如下幾個作用:

  • 授權流程主要是檢查當前用戶是否具備指定資源的訪問權限,如果授權檢查失敗,如401(未認證),403(禁止訪問),那么最終會分別調用認證方案的ChallegenAsync和ForbidAsync方法,也就是說,授權流程側重于授權失敗后的流程控制。
  • 授權流程另外一個主要的任務是檢查授權策略是否均能檢驗通過,如果一個資源通過AuthorizeAttribute的Policy屬性指定了一個或者多個授權策略,那么必須所有授權策略都驗證通過才算授權成功,如果未指定授權策略,那么就驗證默認的授權策略是否能檢驗通過,默認的授權策略則是要求必須用戶認證通過才允許訪問資源。

授權流程本質上就是遍歷所有注入到容器中的IAuthorizationHandler(微軟默認在AddAuthorization的時候向容器注入了:PassThroughAuthorizationHandler,這個授權處理程序遍歷AuthorizationHandlerContext.Requirements中所有實現了IAuthorizationHandler的Requirement類,并調用其HandleAsync方法來檢查當前Requirement是否能校驗通過),并對訪問指定資源所要滿足的所有策略中包含的Requirement進行驗證,如果所有策略包含的Requirement都驗證通過,那么表示授權成功,這里的Requirement是指實現了IAuthorizationRequirement的類,這個接口是一個空接口,用于標記Requirement使用。

以上就是asp.net core 認證和授權實例詳解的詳細內容,更多關于asp.net core 認證授權的資料請關注其它相關文章!

標簽: ASP.NET
相關文章:
主站蜘蛛池模板: 97涩国一产精品久久久久久久 | 久久综合狠狠 | 免费午夜av| 国产精品无码不卡一区二区三区 | 久久国产精品综合 | 国内精品久久久久久久影视蜜臀 | 999精品影视在线观看不卡网站 | 精品少妇一二三区 | 国产主播99 | 久久久精品国产免大香伊 | 日韩av免费看| 国产免费麻豆 | 少妇又色又爽又高潮极品 | 欧美日韩精品一区二区三区在线 | 亚洲国产成人欧美激情 | 亚洲天堂一区二区三区 | 国产成人无码一二三区视频 | 国产欧美一区二区三区在线看 | 99精品一区二区三区 | 日韩av手机在线播放 | 日韩一区二区三区免费 | 国产对白受不了了 | 亚洲精品一区二区三区高潮 | 亚洲成av人片一区二区三区 | 无码无套少妇毛多18pxxxx | 欧美激情69| 韩国午夜理论在线观看 | 777爽死你无码免费看一二区 | 男人天堂视频在线 | 国产一二三四在线 | 黄色精品在线观看 | 久操视频在线播放 | 九一午夜精品av | 午夜精品一区二区三区的区别 | 999久久久国产 | 午夜肉伦伦影院 | 免费看黄a级毛片 | 久久无码中文字幕久久无码app | 国产精品一区网站 | av手机在线免费观看 | 亚洲国产成人一区二区在线 | 少妇一级淫片免费视频 | 亚洲精品456在线播放第一页 | 国产精品一区二区羞羞答答 | 国产香港明星裸体xxxx视频 | 午夜精品久久久内射近拍高清 | 亚洲人成伊人成综合网久久久 | 日本久久高清一区二区三区毛片 | 久久网一区二区 | 日本边添边摸边做边爱的网站 | 国内自拍xxxx18 | 在线国产区| 精品少妇一区二区三区日产乱码 | 久久国产欧美日韩 | 操小妹影院 | 三女同志亚洲人狂欢 | 日韩特黄毛片 | 国产黑色丝袜在线播放 | 欧美肥老太牲交大战 | 综合影院 | 国产精品日韩欧美一区二区三区 | 亚洲人成亚洲人成在线观看 | 无码国产精品一区二区色情男同 | 国产乱人伦偷精品视频不卡 | av福利网| 女人的av | 成年人在线免费观看 | 色播在线观看 | 少妇做爰免费视频网站裸体艺术 | 天干夜天干天天天爽2022 | √天堂资源网最新版在线 | 在厨房拨开内裤进入毛片 | 天天躁日日躁很很很躁 | 久久国内视频 | 亚洲欧美日韩三级 | 亚州欧洲日韩精品 | 白嫩少妇激情无码 | 欧美一区二区三区性视频 | 成人必看www. | 久操久热| 香蕉视频在线观看亚洲 | 国产精品传媒 | 亚洲视频99 | 四虎精品久久 | 亚洲第一二三四区 | 中国黄色一级毛片 | 777奇米888色狠狠俺也去 | 天天摸天天爽 | 农村真人裸体丰满少妇毛片 | 特黄特色的大片观看免费视频 | 色婷婷国产精品 | 国产在线看一区 | 久久久久国产精品一区三寸 | 国产精品久久久久777777 | 久久99免费 | 九七视频在线 | 中文字幕日韩精品无码内射 | 欧美性生活视频免费看 | 老汉色老汉首页a亚洲 | 国产一区二区三区成人久久片老牛 | 四虎国产精品成人免费影视 | 艳妇臀荡乳欲伦69调教视频 | 岛国片在线播放97 | 粗大的内捧猛烈进出在线视频 | 黑人大荫道bbwbbb高潮潮喷 | 国产免费精彩视频 | 国产自产在线视频一区 | 四十五十老熟妇乱孑视频 | 日韩高清不卡在线 | 亚洲va欧美va久久久久久久 | 欧美综合精品 | 久久综合九色综合欧美狠狠 | 9999国产精品欧美久久久久久 | 曰韩一级片 | 一个人看的日本hd免费 | 5566毛片| 久久国| 国内精品久久久久久久果冻传媒 | 国产中文字幕在线免费观看 | 偷拍视频一区二区 | 97在线免费| 久久三级| 妻色成人网 | 精品少妇一区二区三区免费观 | 浮妇高潮喷白浆视频 | 一本大道久久精品懂色aⅴ 一本大道久久卡一卡二卡三乱码 | 销魂美女一区二区 | 日本japanese丰满少妇 | 国产高潮国产高潮久久久 | 国产69精品久久久久孕妇大杂乱 | 亚洲欧美一区二区三区孕妇 | av无码免费一区二区三区 | 美女无遮挡免费网站 | 色婷婷一区二区三区av免费看 | 亚州三级 | 成人天堂资源www在线 | 国产一区二区不卡老阿姨 | 亚洲中文字幕不卡无码 | 东北少妇高潮抽搐 | 一级性生活大片 | av鲁丝一区鲁丝二区鲁丝三区 | 久久久亚洲国产天美传媒修理工 | 俺来也俺也啪www色 俺啪也 | 日韩久久久久久久久 | 亚洲成人精品在线观看 | 四虎影视免费在线观看 | 国产一二精品 | 亚洲精品免费在线 | 日本成人一区二区三区 | 日韩av大片在线观看 | 韩国中文字幕在线观看 | 欧美一区久久 | 激情视频一区二区三区 | 欧美视频在线观看视频 | 天堂中文视频 | 99免费在线观看视频 | 欧美精品久久久久久久久大尺度 | 超碰人人草 | 法国a级理论片乱 | 亚洲人成中文字幕在线观看 | 国产精品美女www爽爽爽视频 | www.五月.com | 日韩在线一二三 | 蜜桃成人在线 | 国人精品视频在线观看 | 国产超碰久久av青草 | 国产av一区二区三区最新精品 | 中文字幕欧美久久日高清 | 波多野结衣亚洲天堂 | 初尝黑人巨砲波多野结衣 | 中文字幕精品av一区二区五区 | 美女上床网站 | 我爱52av| 日本精品久久久 | 五月香蕉网| 国产高潮白浆 | 永久国产 | 天天碰视频 | 日韩毛片在线视频 | 欧美精品久久久久久久久久白贞 | 日韩精品一区二区三区四区视频 | 国产亚洲视频在线观看 | 夜夜爽日日柔柔日日人人 | 成人av资源网 | 无码人妻aⅴ一区二区三区 美女扒开大腿让男人桶 | 黑人巨大精品欧美黑白配亚洲 | 国产黄色大片网站 | 在线精品亚洲欧美日韩国产 | 免费的三级网站 | 性做久久久久久久久久 | aaaa大片少妇高潮免费看 | 久草综合网 | 久久午夜激情 | 国产精品熟女人妻 | 热久久精品免费视频 | 亚洲成人在线观看视频 | 好男人中文资源在线观看 | 特黄av | 四虎884aa成人精品 | 一本色综合久久 | 私人毛片| 91欧美亚洲| 欧美高清在线精品一区 | 韩国三级视频在线观看 | 人妖ts福利视频一二三区 | 国产亚洲va天堂va777 | 白嫩日本少妇做爰 | 夜色88v精品国产亚洲 | 日本久久高清 | 中文字幕丰满人伦在线 | 日韩在线二区 | 日韩精品久久中文字幕 | 免费视频欧美无人区码 | 在线亚洲+欧美+日本专区 | 国产福利一区二区三区 | 国产v亚洲v天堂无码久久久 | 中国女人内谢69xxxx免费视频 | 中字幕视频在线永久在线观看免费 | 亚洲精品天堂久久久老牛 | 日本少妇毛耸耸毛多水多 | 一区二区三区黄色片 | 亚洲免费砖区 | 国产精品女主播 | 国产精品久久久久久久毛片 | 黑人巨大精品欧美一区免费视频 | 国产精品一区免费 | 欧美一区二区人人喊爽 | 国产成人精品综合在线观看 | 我撕开了少妇的蕾丝内裤视频 | 少妇第一次交换又紧又爽 | 国产亚洲精品美女久久久久 | 久久久妻| 鲁一鲁在线视频 | 欧美性久久久久 | 亚洲美女视频在线观看 | 成人爽a毛片一区二区免费 成人爽爽爽 | 中文字幕高清在线免费播放 | 九九视频网 | 国产精品永久免费视频 | 熟女视频一区二区在线观看 | 亚洲另类激情综合偷自拍图 | 国产成人精品一区二三区 | 亚洲成色在线综合网站 | 91丨九色丨露脸 | 亚洲精品久久国产高清 | 一区二区久久久 | 日日摸夜夜摸狠狠摸婷婷 | 美国黄色av | 亚洲一本之道高清乱码 | 97视频人人 | 成人高清在线观看 | 国产区精品在线观看 | 极品少妇在线观看 | babes性欧美69 | 国产爽爽久久影院潘金莲 | 粉嫩粉嫩一区性色av片 | 国产人成看黄久久久久久久久 | 亚洲精品国产精品乱码不97 | 国产在线高清 | 国产精品精品视频一区二区三区 | 狠狠色很很在鲁视频 | 欧美一区二区三区成人久久片 | 国产白丝无码免费视频 | 日韩三级一区 | 天天爽天天做 | 亚洲区小说区图片区qvod | www一区二区www免费 | 精东影业一区二区三区 | 加勒比在线一区 | 亚洲欧美偷拍另类a∨色屁股 | 18禁美女裸体网站无遮挡 | 伊人春色网| 成人久久久久爱 | 国产成人麻豆精品午夜在线 | 无码日韩精品一区二区免费暖暖 | 亚洲欧美日韩制服 | 亚洲人色婷婷成人网站在线观看 | 91性高湖久久久久久久久_久久99 | 国产一级淫片免费放大片 | 久久青青视频 | 亚洲欧美日韩国产精品一区午夜 | 成年女人免费碰碰视频 | 欧美综合视频在线 | 天堂男人在线 | 不卡的中文字幕 | 成人激情小视频 | 91激情影院 | 午夜视频观看 | 国产精品人人爽人人做av片 | 亚洲特黄一级片 | 欧美三日本三级三级在线播放 | 拧花蒂尿用力按凸起喷水尿av | 91中文视频 | 日日骚一区二区 | 农村一级毛片 | 国产精品高潮呻 | 97中文在线 | 国产一区二区三区久久久 | 久草一区| 91精品在线免费观看 | 91av免费在线观看 | 中文无码久久精品 | 中文字幕在线永久 | 一本一道精品欧美中文字幕 | 亚洲久草视频 | 高潮久久久久久久久 | 成人免费直播 | 久久久久久久网 | 激情五月激情综合 | 91久久精品一区二区三区大 | 超碰99在线| 国产白浆在线 | videos亚洲| 久久天天躁狠狠躁夜夜av | 国产美女性生活 | 日韩乱码人妻无码系列中文字幕 | 国产做a爰片久久毛片a片 | 一个人在线观看免费视频www | 欧美黑人性暴力猛交喷水 | 一区二区三区视频在线看 | 国产又粗又猛又爽又黄的视频文字 | 国产在线拍揄自揄拍无码 | 欧美日韩不卡 | 少妇一夜三次一区二区 | 老熟妇毛片 | 色婷婷精品视频 | 国产精品久久久久久久久久久久午夜 | 直接在线观看的三级网址 | 久久久性色精品国产免费观看 | 中文字幕人妻无码一夲道 | 变态美女紧缚一区二区三区 | 国产一区二区视频网站 | 五月天爱爱 | 漂亮人妻被黑人久久精品 | 婷婷色在线 | 撸撸在线视频 | 欧美激情自拍 | 亚洲精品乱码久久久久久日本蜜臀 | 精品九九九 | 国产精品久久久久婷婷二区次 | 亚洲欧洲免费无码 | 蜜桃视频韩日免费播放 | 国产乱码精品一区二区三区中文 | 亚洲日韩欧洲乱码av夜夜摸 | 国产在线一二三区 | 国产亚洲精品第一综合麻豆 | 天天久久久 | 自拍偷拍第 | 亚洲精品久久久久久久久久久久久久 | 男女无遮挡羞羞视频 | 国产91对白在线播放九色 | 国产精品国产三级国产av主播 | 国产精品18久久久久vr使用方法 | 久草在线视频网站 | 久久久久久久久淑女av国产精品 | 成人精品鲁一区一区二区 | 中字幕人妻一区二区三区 | 国产精品一级二级三级 | 无套内谢少妇露脸 | 色婷婷香蕉在线 | 国产欧美精品一区二区三区-老狼 | 欧美精品一 | 久久av红桃一区二区小说 | 三级国产网站 | 成人免费一级伦理片在线播放 | 香港日本韩国三级网站 | 国产精品永久免费 | 特黄特色大片免费播放器下 | 国产最新av | 高潮久久久久久久久 | 国产精品嫩草影院入口日本一区二 | 国产男女裸体做爰爽爽 | 99热久久成人免费频精品2 | 国产成人久久精品激情 | 国产精品久久久久久久岛一牛影视 | 日韩一区二区三免费高清 | 40一50一60老女人毛片 | 欧美日韩精品一区二区三区不卡 | 亚洲国产精品成人av在线 | 国产黄色在线免费看 | 亚洲国产另类久久久精品小说 | 日韩欧美在线视频观看 | 国产大学生情侣呻吟视频 | 亚洲激情视频网 | 欧美人与zoxxxx视频 | 天天做天天爽 | 欧美色图亚洲自拍 | 国产69精品久久久久久野外 | 大又大粗又爽又黄少妇毛片 | 黄色日本网站 | av资源在线看 | 97精品一区二区视频在线观看 | 99久久久国产精品免费蜜臀 | 国产区日韩区欧美区 | 欧美肥婆姓交大片 | 国产午夜视频 | 天天综合网天天综合色 | av手机| 亚洲精品99久久久久中文字幕 | 人妻av乱片av出轨 | 亚洲女同志亚洲女同女播放 | 一区二区三区偷拍 | 不卡中文字幕在线观看 | 不卡日韩 | 婷婷91| 不卡av一区| 大学生a做爰免费观看 | 超碰97人人爱 | 久久精品视频3 | 亚洲精品免费在线视频 | 日韩内射美女人妻一区二区三区 | 肉欲性毛片交38 | 福利社午夜影院 | 国产精品一卡二卡 | 日韩av免费播放 | 久夜精品 | 久久99精品久久久久婷婷 | 无码视频一区二区三区在线观看 | 日本一级淫片免费啪啪3 | 国精产品一区一区三区有限在线 | 最新中文字幕免费视频 | 国产一区导航 | 久久精品夜夜夜夜夜久久 | 美女在线一区 | 亚洲日韩中文无码久久 | 日韩在线一区二区三区免费视频 | 无码色av一二区在线播放 | 国产在线午夜卡精品影院 | 日韩欧美专区 | 无码人妻aⅴ一区二区三区69岛 | 91精品国产乱码久久蜜臀 | 国产91在线免费观看 | 免费成人在线网站 | 成人免费视频视频 | 叶玉卿三级露全乳视频 | 日韩人妻精品无码一区二区三区 | 欧美一区二区 | 国产片一区二区三区 | 在线 | 一区二区三区 | 日批免费在线观看 | 中文字幕一区二区三区人妻少妇 | 亚洲欧美色视频 | 久久免费精彩视频 | 丁香花免费高清完整在线播放 | 久久国产精品嫩草影院的使用方法 | 中文字幕乱偷无码av先锋 | 一级a性色生活片久久毛片明星 | 日韩精品无码一区二区三区久久久 | 男人吃奶摸下挵进去好爽 | 亚洲精品无码午夜福利中文字幕 | 黄视频在线 | 波多野结衣视频网 | 亚洲在线观看免费 | 亚洲 欧美 中文 在线 视频 | 日韩毛片免费观看 | av国产在线观看 | 国产成人av免费看 | 五月激情网站 | 欧美在线视频二区 | www深夜成人白色液体视频 | 亚洲精品网站日本xxxxxxx | 特级毛片www| 国产亚洲精品成人av久久ww | 色综合色综合 | 少妇被躁爽到高潮无码久久 | 一级不卡 | 天天做天天爱天天综合网2021 | 爱福利视频广场 | 久久久久亚洲精品 | 亚洲黄色在线视频 | 大尺度做爰呻吟舌吻网站 | 亚洲黄色网址大全 | 日本黄页网站 | 亚洲欧美男人天堂 | 欧美激情一区二区久久久 | 亚洲 中文 欧美 日韩 在线 | 亚洲一区二区三区无码中文字幕 | 性歌舞团一区二区三区视频 | 国产成a人亚洲精品在线观看 | 国产成人无码国产亚洲 | 国产mv欧美mv日产mv免费 | 蘑菇av | 麻豆精品a∨在线观看 | 色网在线 | 无码国产精成人午夜视频一区二区 | 操大爷影院 | 四虎久久 | 挺进美女教师的蜜桃肥臀视频 | 国产吞精囗交免费视频 | 国产又色又爽又黄刺激视频 | 亚洲欧美激情小说另类 | 国产人成视频在线视频 | 波多野结衣亚洲一区二区 | 狠狠干91 | 久久久久久久久女人体 | 欧美日韩无套内射另类 | 久久久久色 | 欧美色图88| 日本丰满护士爆乳xxxx | 久久a级片| 国偷自产av一区二区三区麻豆 | 国产成人小视频 | 日本一卡二卡四卡无卡乱码视频免费 | 亚洲免费在线观看视频 | 婷婷国产v亚洲v欧美久久 | 一二三区精品视频 | 99日精品| 久久免费看少妇高潮a | 91成熟丰满女人少妇尤物 | 偷偷操影院| 91pony九色 | 国产女无套免费网站 | 理论片午午伦夜理片影院99 | 依依成人综合 | 九色91| 999在线观看精品免费不卡网站 | 亚洲天堂2014 | 久久精品午夜 | 欧美无乱码久久久免费午夜一区 | 天天做天天干 | 日韩a在线播放 | 国产成人精品微拍视频网址 | 国产天码青椒老色批青椒影视 | 成年人国产视频 | 国精品人妻无码一区二区三区性色 | 亚洲专区一 | 性做爰过程免费视频美女按店 | 人人人妻人人人妻人人人 | 日韩一卡二卡在线 | 欧美亚洲自拍偷拍 | 日韩成人三级 | 久久精品成人av | 亚洲国产精品国自产拍久久 | 国产又粗又大又爽视频 | 国产91天堂素人搭讪系列 | 国产精品一区二区三区久久久 | 人人综合亚洲无线码另类 | 一本一道久久a久久精品综合 | 黄色一级免费网站 | 日本激情在线 | 国内最真实的xxxx人伦 | 女子浴室啪啪hd三级 | 黄网av | 午夜精品一区二区三区在线 | 久久精品99 | 中国国产黄色片 | 亚洲码欧美码一区二区三区 | 欧美黑人两根巨大挤入 | 亚洲色图偷 | 夜夜嗨av一区二区三区中文字幕 | 女人一级大片 | 国产视频一区二区在线播放 | 黄色大全免费观看 | 男人进入女人下部视频 | 天堂а√8在线最新版在线 天堂а√在线地址 | 精品综合久久久久久98 | 国产国语熟妇视频在线观看 | 国产情侣小视频 | 成人性生交大片免费看冫视频 | 久久精品国内一区二区三区 | 午夜福利无码不卡在线观看 | 东北少妇不戴套对白第一次 | 最新国产乱人伦偷精品免费网站 | 成年片色大黄全免费软件到 | 高h辣h情趣道具h黄n男一女 | 377人体粉嫩噜噜噜 精品久久久久久无码中文野结衣 | 亚洲精品中文在线 | 日韩精品a片一区二区三区妖精 | 午夜时刻免费入口 | 202丰满熟女妇大 | 国产白丝jk捆绑束缚调教视频 | 波多野结衣先锋影音 | 中国吞精videos露脸 | 国产成人二区 | 色屁屁www影院免费观看入口 | 午夜嘿嘿 | 日韩欧美一级大片 | 中文字幕高清免费日韩视频在线 | 天堂亚洲一品 | 曰批全过程免费视频在线观看无码 | 6080一级片 | 青青草久久伊人 | 伊人网一区二区 | 99在线 | 亚洲 | 日韩乱码人妻无码系列中文字幕 | 国产性色av高清在线观看 | 777cc成人 | 黑人巨大精品欧美 | 亚洲国产成人一区二区精品区 | 色视频网| 青青草手机视频 | 国产又粗又硬视频 | 黄色片小视频 | 国产精品成人网 | 国产精品毛片一区 | 粉嫩粉嫩的虎白女18在线软件 | 欧美一区二区三区四区在线 | 粉嫩av一区二区三区四区在线观看 | 性欧美videos高清精品 | 在线欧美视频 | 免费精品视频一区二区三区 | 人妻精品国产一区二区 | 欧美久久免费观看 | 欧美精品18 | 亚洲男人天堂网站 | 丰满少妇在线观看网站 | jizz韩国| 久久婷婷五月综合色丁香 | 亚洲蜜臀av乱码久久精品蜜桃 | 法国少妇愉情理伦片 | 性欧美video另类hd尤物 | 亚洲精品久久久中文字幕痴女 | 国产伦精品一区二区三区高清 | www国产成人免费观看视频,深夜成人网 | 成人爱爱aa啪啪看片 |