日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Akka-CQRS(16)- gRPC用JWT进行权限管理

發布時間:2023/12/10 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Akka-CQRS(16)- gRPC用JWT进行权限管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ?前面談過gRPC的SSL/TLS安全機制,發現設置過程比較復雜:比如證書簽名:需要服務端、客戶端兩頭都設置等。想想實際上用JWT會更加便捷,而且更安全和功能強大,因為除JWT的加密簽名之外還可以把私密的用戶信息放在JWT里加密后在服務端和客戶端之間傳遞。當然,最基本的是通過對JWT的驗證機制可以控制客戶端對某些功能的使用權限。

通過JWT實現gRPC的函數調用權限管理原理其實很簡單:客戶端首先從服務端通過身份驗證獲取JWT,然后在調用服務函數時把這個JWT同時傳給服務端進行權限驗證。客戶端提交身份驗證請求返回JWT可以用一個獨立的服務函數實現,如下面.proto文件里的GetAuthToken:

message PBPOSCredential {string userid = 1;string password = 2; } message PBPOSToken {string jwt = 1; }service SendCommand {rpc SingleResponse(PBPOSCommand) returns (PBPOSResponse) {};rpc GetTxnItems(PBPOSCommand) returns (stream PBTxnItem) {};rpc GetAuthToken(PBPOSCredential) returns (PBPOSToken) {};}

比較棘手的是如何把JWT從客戶端傳送至服務端,因為gRPC基本上騎劫了Request和Response。其中一個方法是通過Interceptor來截取Request的header即metadata。客戶端將JWT寫入metadata,服務端從metadata讀取JWT。

我們先看看客戶端的Interceptor設置和使用:

class AuthClientInterceptor(jwt: String) extends ClientInterceptor {def interceptCall[ReqT, RespT](methodDescriptor: MethodDescriptor[ReqT, RespT], callOptions: CallOptions, channel: io.grpc.Channel): ClientCall[ReqT, RespT] =new ForwardingClientCall.SimpleForwardingClientCall[ReqT, RespT](channel.newCall(methodDescriptor, callOptions)) {override def start(responseListener: ClientCall.Listener[RespT], headers: Metadata): Unit = {headers.put(Key.of("jwt", Metadata.ASCII_STRING_MARSHALLER), jwt)super.start(responseListener, headers)}}}...val unsafeChannel = NettyChannelBuilder.forAddress("192.168.0.189",50051).negotiationType(NegotiationType.PLAINTEXT).build()val securedChannel = ClientInterceptors.intercept(unsafeChannel, new AuthClientInterceptor(jwt))val securedClient = SendCommandGrpc.blockingStub(securedChannel)val resp = securedClient.singleResponse(PBPOSCommand())

身份驗證請求即JWT獲取是不需要Interceptor的,所以要用沒有Interceptor的unsafeChannel:?

//build connection channelval unsafeChannel = NettyChannelBuilder.forAddress("192.168.0.189",50051).negotiationType(NegotiationType.PLAINTEXT).build()val authClient = SendCommandGrpc.blockingStub(unsafeChannel)val jwt = authClient.getAuthToken(PBPOSCredential(userid="johnny",password="p4ssw0rd")).jwtprintln(s"got jwt: $jwt")

JWT的構建和使用已經在前面的幾篇博文里討論過了:?

package com.datatech.authimport pdi.jwt._ import org.json4s.native.Json import org.json4s._ import org.json4s.jackson.JsonMethods._ import pdi.jwt.algorithms._ import scala.util._object AuthBase {type UserInfo = Map[String, Any]case class AuthBase(algorithm: JwtAlgorithm = JwtAlgorithm.HMD5,secret: String = "OpenSesame",getUserInfo: (String,String) => Option[UserInfo] = null) {ctx =>def withAlgorithm(algo: JwtAlgorithm): AuthBase = ctx.copy(algorithm = algo)def withSecretKey(key: String): AuthBase = ctx.copy(secret = key)def withUserFunc(f: (String, String) => Option[UserInfo]): AuthBase = ctx.copy(getUserInfo = f)def authenticateToken(token: String): Option[String] =algorithm match {case algo: JwtAsymmetricAlgorithm =>Jwt.isValid(token, secret, Seq((algorithm.asInstanceOf[JwtAsymmetricAlgorithm]))) match {case true => Some(token)case _ => None}case _ =>Jwt.isValid(token, secret, Seq((algorithm.asInstanceOf[JwtHmacAlgorithm]))) match {case true => Some(token)case _ => None}}def getUserInfo(token: String): Option[UserInfo] = {algorithm match {case algo: JwtAsymmetricAlgorithm =>Jwt.decodeRawAll(token, secret, Seq(algorithm.asInstanceOf[JwtAsymmetricAlgorithm])) match {case Success(parts) => Some(((parse(parts._2).asInstanceOf[JObject]) \ "userinfo").values.asInstanceOf[UserInfo])case Failure(err) => None}case _ =>Jwt.decodeRawAll(token, secret, Seq(algorithm.asInstanceOf[JwtHmacAlgorithm])) match {case Success(parts) => Some(((parse(parts._2).asInstanceOf[JObject]) \ "userinfo").values.asInstanceOf[UserInfo])case Failure(err) => None}}}def issueJwt(userinfo: UserInfo): String = {val claims = JwtClaim() + Json(DefaultFormats).write(("userinfo", userinfo))Jwt.encode(claims, secret, algorithm)}}}

服務端Interceptor的構建和設置如下:?

abstract class FutureListener[Q](implicit ec: ExecutionContext) extends Listener[Q] {protected val delegate: Future[Listener[Q]]private val eventually = delegate.foreach _override def onComplete(): Unit = eventually { _.onComplete() }override def onCancel(): Unit = eventually { _.onCancel() }override def onMessage(message: Q): Unit = eventually { _ onMessage message }override def onHalfClose(): Unit = eventually { _.onHalfClose() }override def onReady(): Unit = eventually { _.onReady() }}object Keys {val AUTH_META_KEY: Metadata.Key[String] = of("jwt", Metadata.ASCII_STRING_MARSHALLER)val AUTH_CTX_KEY: Context.Key[String] = key("jwt") }class AuthorizationInterceptor(implicit ec: ExecutionContext) extends ServerInterceptor {override def interceptCall[Q, R](call: ServerCall[Q, R],headers: Metadata,next: ServerCallHandler[Q, R]): Listener[Q] = {val prevCtx = Context.currentval jwt = headers.get(Keys.AUTH_META_KEY)println(s"!!!!!!!!!!! $jwt !!!!!!!!!!")new FutureListener[Q] {protected val delegate = Future {val nextCtx = prevCtx withValue (Keys.AUTH_CTX_KEY, jwt)Contexts.interceptCall(nextCtx, call, headers, next)}}} }trait gRPCServer {def runServer(service: ServerServiceDefinition)(implicit actorSys: ActorSystem): Unit = {import actorSys.dispatcherval server = NettyServerBuilder.forPort(50051).addService(ServerInterceptors.intercept(service,new AuthorizationInterceptor)).build.start// make sure our server is stopped when jvm is shut downRuntime.getRuntime.addShutdownHook(new Thread() {override def run(): Unit = {server.shutdown()server.awaitTermination()}})}}

注意:客戶端上傳的request-header只能在構建server時接觸到,在具體服務函數里是無法調用request-header的,但gRPC又一個結構Context可以在兩個地方都能調用。所以,我們可以在構建server時把JWT從header搬到Context里。不過,千萬注意這個Context的讀寫必須在同一個線程里。在服務端的Interceptor里我們把JWT從metadata里讀出然后寫入Context。在需要權限管理的服務函數里再從Context里讀取JWT進行驗證:?

override def singleResponse(request: PBPOSCommand): Future[PBPOSResponse] = {val jwt = AUTH_CTX_KEY.getprintln(s"***********$jwt**************")val optUserInfo = authenticator.getUserInfo(jwt)val shopid = optUserInfo match {case Some(m) => m("shopid")case None => "invalid token!"}FastFuture.successful(PBPOSResponse(msg=s"shopid:$shopid"))}

JWT的構建也是一個服務函數:?

val authenticator = new AuthBase().withAlgorithm(JwtAlgorithm.HS256).withSecretKey("OpenSesame").withUserFunc(getValidUser)override def getAuthToken(request: PBPOSCredential): Future[PBPOSToken] = {getValidUser(request.userid, request.password) match {case Some(userinfo) => FastFuture.successful(PBPOSToken(authenticator.issueJwt(userinfo)))case None => FastFuture.successful(PBPOSToken("Invalid Token!"))}}

還需要一個模擬的身份驗證服務函數:?

package com.datatech.authobject MockUserAuthService {type UserInfo = Map[String,Any]case class User(username: String, password: String, userInfo: UserInfo)val validUsers = Seq(User("johnny", "p4ssw0rd",Map("shopid" -> "1101", "userid" -> "101")),User("tiger", "secret", Map("shopid" -> "1101" , "userid" -> "102")))def getValidUser(userid: String, pswd: String): Option[UserInfo] =validUsers.find(user => user.username == userid && user.password == pswd) match {case Some(user) => Some(user.userInfo)case _ => None} }

下面是本次示范的源代碼:

project/plugins.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9") addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.15") addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.21") addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2") libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.9.0-M6"

build.sbt

name := "grpc-jwt"version := "0.1"version := "0.1"scalaVersion := "2.12.8"scalacOptions += "-Ypartial-unification"val akkaversion = "2.5.23"libraryDependencies := Seq("com.typesafe.akka" %% "akka-cluster-metrics" % akkaversion,"com.typesafe.akka" %% "akka-cluster-sharding" % akkaversion,"com.typesafe.akka" %% "akka-persistence" % akkaversion,"com.lightbend.akka" %% "akka-stream-alpakka-cassandra" % "1.0.1","org.mongodb.scala" %% "mongo-scala-driver" % "2.6.0","com.lightbend.akka" %% "akka-stream-alpakka-mongodb" % "1.0.1","com.typesafe.akka" %% "akka-persistence-query" % akkaversion,"com.typesafe.akka" %% "akka-persistence-cassandra" % "0.97","com.datastax.cassandra" % "cassandra-driver-core" % "3.6.0","com.datastax.cassandra" % "cassandra-driver-extras" % "3.6.0","ch.qos.logback" % "logback-classic" % "1.2.3","io.monix" %% "monix" % "3.0.0-RC2","org.typelevel" %% "cats-core" % "2.0.0-M1","io.grpc" % "grpc-netty" % scalapb.compiler.Version.grpcJavaVersion,"io.netty" % "netty-tcnative-boringssl-static" % "2.0.22.Final","com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf","com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion,"com.pauldijou" %% "jwt-core" % "3.0.1","de.heikoseeberger" %% "akka-http-json4s" % "1.22.0","org.json4s" %% "json4s-native" % "3.6.1","com.typesafe.akka" %% "akka-http-spray-json" % "10.1.8","org.json4s" %% "json4s-jackson" % "3.6.7","org.json4s" %% "json4s-ext" % "3.6.7")// (optional) If you need scalapb/scalapb.proto or anything from // google/protobuf/*.proto //libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf"PB.targets in Compile := Seq(scalapb.gen() -> (sourceManaged in Compile).value )enablePlugins(JavaAppPackaging)

main/protobuf/posmessages.proto

syntax = "proto3";import "google/protobuf/wrappers.proto"; import "google/protobuf/any.proto"; import "scalapb/scalapb.proto";option (scalapb.options) = {// use a custom Scala package name// package_name: "io.ontherocks.introgrpc.demo"// don't append file name to packageflat_package: true// generate one Scala file for all messages (services still get their own file)single_file: true// add imports to generated file// useful when extending traits or using custom types// import: "io.ontherocks.hellogrpc.RockingMessage"// code to put at the top of generated file// works only with `single_file: true`//preamble: "sealed trait SomeSealedTrait" };package com.datatech.pos.messages;message PBVchState { //單據狀態string opr = 1; //收款員int64 jseq = 2; //begin journal sequence for read-side replayint32 num = 3; //當前單號int32 seq = 4; //當前序號bool void = 5; //取消模式bool refd = 6; //退款模式bool susp = 7; //掛單bool canc = 8; //廢單bool due = 9; //當前余額string su = 10; //主管編號string mbr = 11; //會員號int32 mode = 12; //當前操作流程:0=logOff, 1=LogOn, 2=Payment }message PBTxnItem { //交易記錄string txndate = 1; //交易日期string txntime = 2; //錄入時間string opr = 3; //操作員int32 num = 4; //銷售單號int32 seq = 5; //交易序號int32 txntype = 6; //交易類型int32 salestype = 7; //銷售類型int32 qty = 8; //交易數量int32 price = 9; //單價(分)int32 amount = 10; //碼洋(分)int32 disc = 11; //折扣率 (%)int32 dscamt = 12; //折扣額:負值 net實洋 = amount + dscamtstring member = 13; //會員卡號string code = 14; //編號(商品、卡號...)string acct = 15; //賬號string dpt = 16; //部類 }message PBPOSResponse {int32 sts = 1;string msg = 2;PBVchState voucher = 3;repeated PBTxnItem txnitems = 4;}message PBPOSCommand {string commandname = 1;string delimitedparams = 2; }message PBPOSCredential {string userid = 1;string password = 2; } message PBPOSToken {string jwt = 1; }service SendCommand {rpc SingleResponse(PBPOSCommand) returns (PBPOSResponse) {};rpc GetTxnItems(PBPOSCommand) returns (stream PBTxnItem) {};rpc GetAuthToken(PBPOSCredential) returns (PBPOSToken) {};}

gRPCServer.scala

package com.datatech.grpc.serverimport io.grpc.ServerServiceDefinition import io.grpc.netty.NettyServerBuilder import io.grpc.ServerInterceptors import scala.concurrent._ import io.grpc.Context import io.grpc.Contexts import io.grpc.ServerCall import io.grpc.ServerCallHandler import io.grpc.ServerInterceptor import io.grpc.Metadata import io.grpc.Metadata.Key.of import io.grpc.Context.key import io.grpc.ServerCall.Listener import akka.actor._abstract class FutureListener[Q](implicit ec: ExecutionContext) extends Listener[Q] {protected val delegate: Future[Listener[Q]]private val eventually = delegate.foreach _override def onComplete(): Unit = eventually { _.onComplete() }override def onCancel(): Unit = eventually { _.onCancel() }override def onMessage(message: Q): Unit = eventually { _ onMessage message }override def onHalfClose(): Unit = eventually { _.onHalfClose() }override def onReady(): Unit = eventually { _.onReady() }}object Keys {val AUTH_META_KEY: Metadata.Key[String] = of("jwt", Metadata.ASCII_STRING_MARSHALLER)val AUTH_CTX_KEY: Context.Key[String] = key("jwt") }class AuthorizationInterceptor(implicit ec: ExecutionContext) extends ServerInterceptor {override def interceptCall[Q, R](call: ServerCall[Q, R],headers: Metadata,next: ServerCallHandler[Q, R]): Listener[Q] = {val prevCtx = Context.currentval jwt = headers.get(Keys.AUTH_META_KEY)println(s"!!!!!!!!!!! $jwt !!!!!!!!!!")new FutureListener[Q] {protected val delegate = Future {val nextCtx = prevCtx withValue (Keys.AUTH_CTX_KEY, jwt)Contexts.interceptCall(nextCtx, call, headers, next)}}} }trait gRPCServer {def runServer(service: ServerServiceDefinition)(implicit actorSys: ActorSystem): Unit = {import actorSys.dispatcherval server = NettyServerBuilder.forPort(50051).addService(ServerInterceptors.intercept(service,new AuthorizationInterceptor)).build.start// make sure our server is stopped when jvm is shut downRuntime.getRuntime.addShutdownHook(new Thread() {override def run(): Unit = {server.shutdown()server.awaitTermination()}})}}

POSServices.scala

package com.datatech.pos.service import com.datatech.grpc.server.Keys._ import akka.http.scaladsl.util.FastFuture import com.datatech.pos.messages._ import com.datatech.grpc.server._ import com.datatech.auth.MockUserAuthService._import scala.concurrent.Future import com.datatech.auth.AuthBase._ import pdi.jwt._ import akka.actor._ import io.grpc.stub.StreamObserverobject POSServices extends gRPCServer {type UserInfo = Map[String, Any]class POSServices extends SendCommandGrpc.SendCommand {val authenticator = new AuthBase().withAlgorithm(JwtAlgorithm.HS256).withSecretKey("OpenSesame").withUserFunc(getValidUser)override def getTxnItems(request: PBPOSCommand, responseObserver: StreamObserver[PBTxnItem]): Unit = ???override def singleResponse(request: PBPOSCommand): Future[PBPOSResponse] = {val jwt = AUTH_CTX_KEY.getprintln(s"***********$jwt**************")val optUserInfo = authenticator.getUserInfo(jwt)val shopid = optUserInfo match {case Some(m) => m("shopid")case None => "invalid token!"}FastFuture.successful(PBPOSResponse(msg=s"shopid:$shopid"))}override def getAuthToken(request: PBPOSCredential): Future[PBPOSToken] = {getValidUser(request.userid, request.password) match {case Some(userinfo) => FastFuture.successful(PBPOSToken(authenticator.issueJwt(userinfo)))case None => FastFuture.successful(PBPOSToken("Invalid Token!"))}}}def main(args: Array[String]) = {implicit val system = ActorSystem("grpc-system")val svc = SendCommandGrpc.bindService(new POSServices, system.dispatcher)runServer(svc)} }

AuthBase.scala

package com.datatech.authimport pdi.jwt._ import org.json4s.native.Json import org.json4s._ import org.json4s.jackson.JsonMethods._ import pdi.jwt.algorithms._ import scala.util._object AuthBase {type UserInfo = Map[String, Any]case class AuthBase(algorithm: JwtAlgorithm = JwtAlgorithm.HMD5,secret: String = "OpenSesame",getUserInfo: (String,String) => Option[UserInfo] = null) {ctx =>def withAlgorithm(algo: JwtAlgorithm): AuthBase = ctx.copy(algorithm = algo)def withSecretKey(key: String): AuthBase = ctx.copy(secret = key)def withUserFunc(f: (String, String) => Option[UserInfo]): AuthBase = ctx.copy(getUserInfo = f)def authenticateToken(token: String): Option[String] =algorithm match {case algo: JwtAsymmetricAlgorithm =>Jwt.isValid(token, secret, Seq((algorithm.asInstanceOf[JwtAsymmetricAlgorithm]))) match {case true => Some(token)case _ => None}case _ =>Jwt.isValid(token, secret, Seq((algorithm.asInstanceOf[JwtHmacAlgorithm]))) match {case true => Some(token)case _ => None}}def getUserInfo(token: String): Option[UserInfo] = {algorithm match {case algo: JwtAsymmetricAlgorithm =>Jwt.decodeRawAll(token, secret, Seq(algorithm.asInstanceOf[JwtAsymmetricAlgorithm])) match {case Success(parts) => Some(((parse(parts._2).asInstanceOf[JObject]) \ "userinfo").values.asInstanceOf[UserInfo])case Failure(err) => None}case _ =>Jwt.decodeRawAll(token, secret, Seq(algorithm.asInstanceOf[JwtHmacAlgorithm])) match {case Success(parts) => Some(((parse(parts._2).asInstanceOf[JObject]) \ "userinfo").values.asInstanceOf[UserInfo])case Failure(err) => None}}}def issueJwt(userinfo: UserInfo): String = {val claims = JwtClaim() + Json(DefaultFormats).write(("userinfo", userinfo))Jwt.encode(claims, secret, algorithm)}}}

POSClient.scala

package com.datatech.pos.clientimport com.datatech.pos.messages.{PBPOSCommand, PBPOSCredential, SendCommandGrpc} import io.grpc.stub.StreamObserver import io.grpc.netty.{ NegotiationType, NettyChannelBuilder} import io.grpc.CallOptions import io.grpc.ClientCall import io.grpc.ClientInterceptor import io.grpc.ForwardingClientCall import io.grpc.Metadata import io.grpc.Metadata.Key import io.grpc.MethodDescriptor import io.grpc.ClientInterceptorsobject POSClient {class AuthClientInterceptor(jwt: String) extends ClientInterceptor {def interceptCall[ReqT, RespT](methodDescriptor: MethodDescriptor[ReqT, RespT], callOptions: CallOptions, channel: io.grpc.Channel): ClientCall[ReqT, RespT] =new ForwardingClientCall.SimpleForwardingClientCall[ReqT, RespT](channel.newCall(methodDescriptor, callOptions)) {override def start(responseListener: ClientCall.Listener[RespT], headers: Metadata): Unit = {headers.put(Key.of("jwt", Metadata.ASCII_STRING_MARSHALLER), jwt)super.start(responseListener, headers)}}}def main(args: Array[String]): Unit = {//build connection channelval unsafeChannel = NettyChannelBuilder.forAddress("192.168.0.189",50051).negotiationType(NegotiationType.PLAINTEXT).build()val authClient = SendCommandGrpc.blockingStub(unsafeChannel)val jwt = authClient.getAuthToken(PBPOSCredential(userid="johnny",password="p4ssw0rd")).jwtprintln(s"got jwt: $jwt")val securedChannel = ClientInterceptors.intercept(unsafeChannel, new AuthClientInterceptor(jwt))val securedClient = SendCommandGrpc.blockingStub(securedChannel)val resp = securedClient.singleResponse(PBPOSCommand())println(s"secured response: $resp")// wait for async executionscala.io.StdIn.readLine()}}

?

轉載于:https://www.cnblogs.com/tiger-xc/p/11188900.html

總結

以上是生活随笔為你收集整理的Akka-CQRS(16)- gRPC用JWT进行权限管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

www日韩在线观看 | 天操夜夜操 | 日韩av男人的天堂 | 麻豆一精品传二传媒短视频 | 欧美成人a在线 | 亚洲涩综合 | 国产高清视频在线观看 | 美女视频a美女大全免费下载蜜臀 | 一级黄色片在线免费看 | 天天干天天爽 | 亚洲va欧美| 亚洲在线黄色 | 久久99精品国产麻豆宅宅 | 91黄色视屏 | 人人盈棋牌 | 午夜123 | 国产夫妻自拍av | 国产日韩精品一区二区三区 | 日韩视频免费在线观看 | 久久五月天色综合 | 天天操天天操天天操天天 | 在线天堂亚洲 | 丝袜av一区 | 99久久精品日本一区二区免费 | 不卡的一区二区三区 | 天天操天天干天天干 | 91成人在线观看高潮 | 日韩精品欧美专区 | 日韩免费视频线观看 | 久久天天拍 | 久精品在线 | 亚洲精品视频免费观看 | a v在线视频 | 精品在线观看视频 | 国产精品免费视频观看 | 日韩成人欧美 | 色综合咪咪久久网 | 国产麻豆剧传媒免费观看 | 亚洲日b视频 | 国产精品2019 | 亚洲在线免费视频 | 久草精品免费 | 深爱开心激情 | 精品久久久久久电影 | av大全免费在线观看 | 91污污视频在线观看 | 国产精品免费在线观看视频 | 摸bbb搡bbb搡bbbb | 久久久亚洲影院 | 97视频总站 | 久久九精品| 2018亚洲男人天堂 | 综合久久2023 | 去看片 | 天天操天天谢 | 四虎影视成人精品国库在线观看 | 国产精品99精品 | 菠萝菠萝在线精品视频 | 中文字幕av电影下载 | 亚洲福利精品 | 亚洲一区二区三区四区在线视频 | 免费人做人爱www的视 | 国产区高清在线 | 美女精品 | 国产欧美久久久精品影院 | 蜜臀一区二区三区精品免费视频 | 国产a免费 | 国产福利不卡视频 | 中文字幕制服丝袜av久久 | 97精品超碰一区二区三区 | 国产小视频在线观看免费 | 免费麻豆 | 中文在线8新资源库 | 夜夜操狠狠干 | 天天鲁天天干天天射 | 福利视频 | 久久国产精品免费 | 亚洲一本视频 | 精品国产一区二区三区久久久蜜月 | 国产精品自在欧美一区 | 欧美极品在线播放 | 国产精品久久久久国产精品日日 | 一本色道久久精品 | 久热超碰 | 天天操天天摸天天爽 | 亚洲91av| 国内亚洲精品 | 九九免费视频 | 久久99精品一区二区三区三区 | 色综合婷婷久久 | 视频99爱 | 91亚洲狠狠婷婷综合久久久 | 日韩在线欧美在线 | 新版资源中文在线观看 | 丁香影院在线 | 四虎影视www| 亚洲在线视频网站 | 日韩精品首页 | 五月天婷婷综合 | 欧美男男激情videos | 777xxx欧美| 欧美成人区| 综合激情久久 | 福利一区在线视频 | 国产黄色片在线免费观看 | www色,com| 黄色免费网站下载 | 97超碰资源总站 | 97成人啪啪网 | 久草视频在线资源 | 成人手机在线视频 | 五月婷网 | 激情综合五月网 | 视频91| 中文字幕中文字幕在线一区 | 高清不卡一区二区在线 | 69av视频在线 | 国产中文字幕精品 | 成人性生交视频 | 国产精品一区一区三区 | 在线导航福利 | 成年人在线免费看视频 | 在线高清一区 | 亚洲精品av在线 | 中文字幕三区 | 亚洲自拍偷拍色图 | 天堂久色 | 996久久国产精品线观看 | 91麻豆精品国产91久久久使用方法 | 中文字幕有码在线观看 | 人人爽人人爽人人爽人人爽 | 久久99国产一区二区三区 | 日韩久久久久久久久 | www.天天干| 综合中文字幕 | 青青河边草观看完整版高清 | 99r在线观看| 亚洲欧美视频网站 | 91九色porn在线资源 | 国产精品欧美久久久久三级 | 国产亚洲欧美在线视频 | 在线观看中文字幕网站 | 91av在线免费观看 | 久久视频免费在线 | 在线小视频你懂的 | 欧美日韩视频在线播放 | 天天射天天舔天天干 | 亚洲精品国产精品久久99 | 国产精品高潮呻吟久久av无 | 日韩美女免费线视频 | 成人一区二区三区在线 | 91av在线视频播放 | 国产中文在线视频 | 久久不色 | 97av在线视频免费播放 | 国产黄视频在线观看 | 69国产精品视频免费观看 | 特级西西444www大胆高清无视频 | 国产精品午夜在线观看 | www.天天成人国产电影 | 亚洲精品永久免费视频 | 精品久久久999 | 欧美日韩亚洲在线观看 | 在线观看国产区 | 亚洲尺码电影av久久 | 一区二区三区高清不卡 | 国产成人精品一区二区在线观看 | 国内精品久久久 | 久热香蕉视频 | 成人欧美一区二区三区黑人麻豆 | 天天操天天爽天天干 | 六月丁香社区 | 久久免费视频国产 | 成人免费 在线播放 | 五月婷婷六月综合 | 久久精品中文字幕少妇 | 91av蜜桃| 亚洲专区欧美专区 | 国产黄在线免费观看 | 国产老太婆免费交性大片 | 免费亚洲黄色 | 丁香电影小说免费视频观看 | 日日夜色| 制服丝袜亚洲 | 久久国产精品视频免费看 | 五月激情av | 福利一区在线视频 | 在线观看视频你懂 | 精品久久久久久久 | 精品国产中文字幕 | 国产成人a亚洲精品 | 中文字幕在线观看完整版 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 18久久久久久 | 精品国产伦一区二区三区免费 | 国产精品久久久久久久电影 | 91mv.cool在线观看 | 人人精久 | 亚洲视频在线观看网站 | 久久久久国产精品一区 | 国产精品一区二区无线 | 在线观看欧美成人 | 激情网站 | 欧美91精品久久久久国产性生爱 | 久久综合精品国产一区二区三区 | 九九免费在线视频 | 人人澡人人草 | 久久毛片视频 | 99久久99热这里只有精品 | 99国产精品视频免费观看一公开 | 国产精品久久电影网 | a黄色一级片 | 成人av网站在线观看 | 亚洲精品在线免费看 | 色噜噜日韩精品欧美一区二区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | bbb搡bbb爽爽爽 | 在线观看 亚洲 | 国产 一区二区三区 在线 | 国产精品ⅴa有声小说 | mm1313亚洲精品国产 | 免费国产一区二区视频 | 国产精品麻 | 日韩精品一区二区在线 | 91最新网址 | 国产精品久久精品 | 69xxxx欧美 | 欧美日韩国产成人 | 九九精品在线观看 | 日本久久不卡视频 | 国产精品五月天 | 亚洲精品久久久蜜臀下载官网 | 一区二区av | 欧美色噜噜 | 91久久国产综合精品女同国语 | 日日干,天天干 | 综合色爱| 蜜臀久久99静品久久久久久 | 精品久久久成人 | 国产在线精品一区二区三区 | 国产精品久久99 | 韩国av一区 | 欧洲精品二区 | 免费日韩电影 | 曰本三级在线 | 麻豆综合网 | 午夜精品久久 | 国产一区在线免费观看视频 | 欧美激情综合五月 | 97**国产露脸精品国产 | 91中文在线视频 | 99精品国产一区二区三区不卡 | 国产精品一区二区美女视频免费看 | 在线 影视 一区 | 成人一级在线观看 | 久久亚洲电影 | 国产一区高清在线 | 国产精品久久久久久久久久免费 | 久久激情视频免费观看 | 国产精品9999 | 国产亲近乱来精品 | 国产精品一区二区无线 | 久久久久久黄色 | 欧洲成人免费 | 中文字幕高清在线 | 五月天天天操 | 在线观看福利网站 | av软件在线观看 | 三级毛片视频 | 国精产品永久999 | 99情趣网视频| 亚洲成人av影片 | 欧美久久久 | 九九九毛片 | 国产精品va视频 | avav片 | 91视频在线自拍 | 成人免费网视频 | 六月丁香婷婷在线 | 日韩欧美高清在线观看 | 国产福利91精品张津瑜 | 久久免费看片 | 国产v在线 | 久久久久久久久久伊人 | 日韩av影片在线观看 | 亚洲精品免费播放 | 国产精品久久久视频 | 97视频在线观看网址 | 亚洲综合少妇 | 亚洲精品免费在线视频 | 日日碰狠狠添天天爽超碰97久久 | 干亚洲少妇 | 日本免费久久高清视频 | 久久视频在线免费观看 | 最新国产精品亚洲 | 久草在线费播放视频 | 欧美在线一二区 | 国产人成一区二区三区影院 | 久久久久女人精品毛片 | 一区二区精品在线 | 久久综合九色99 | 毛片888 | 国产成人久久77777精品 | 五月天综合 | 色噜噜色噜噜 | 麻豆视频国产 | 色婷婷激婷婷情综天天 | 92中文资源在线 | 粉嫩av一区二区三区四区 | 久久久综合九色合综国产精品 | 91看国产 | 日韩精品中文字幕在线不卡尤物 | 久久97久久97精品免视看 | av福利资源| 美女视频黄,久久 | 91精品国自产在线 | 免费成人在线视频网站 | 日韩免费观看高清 | 久久久久久久久久久黄色 | 欧美色综合天天久久综合精品 | 五月在线 | 国产在线资源 | 久久精品日产第一区二区三区乱码 | 麻豆视频国产在线观看 | 久久高清视频免费 | 成年人免费在线观看网站 | 久久免费av电影 | 综合国产在线 | 国产不卡av在线播放 | 99久视频 | 99激情网 | 91在线看黄| 九九精品无码 | 国产精品一区二区果冻传媒 | 欧美成人免费在线 | 天无日天天操天天干 | 天天鲁一鲁摸一摸爽一爽 | 久久久久成人精品 | 日韩在线不卡视频 | 激情网第四色 | 婷婷五月在线视频 | 伊人久久国产精品 | 色在线高清| 黄色片视频在线观看 | 91精品婷婷国产综合久久蝌蚪 | 韩国av不卡 | www.综合网.com | 日韩欧美一区二区三区视频 | 亚洲黄电影 | 在线观看国产成人av片 | 在线看毛片网站 | 国产精品一区二区久久 | 日韩电影一区二区三区在线观看 | 五月婷婷激情六月 | 婷婷在线色 | 日韩av免费一区二区 | 狠狠躁日日躁狂躁夜夜躁 | 91久久一区二区 | 日韩专区在线播放 | 国产精品人人做人人爽人人添 | 久久a视频 | 91成人精品在线 | 91网在线看 | 免费av大片| 最新免费中文字幕 | 最新中文在线视频 | 国产无套精品久久久久久 | 国产成人精品区 | 亚洲美女视频在线 | 色婷婷婷| 中文亚洲欧美日韩 | 午夜精品久久久久久久爽 | 婷婷午夜天 | 亚洲精选视频在线 | 成人久久久久 | 激情图片久久 | 久久久久久久av | 精品视频久久 | 国产亚洲精品综合一区91 | 精品视频在线视频 | 91探花在线| 91精品爽啪蜜夜国产在线播放 | 美女黄久久 | 最新av电影网址 | 久久视频在线视频 | 国产精品毛片久久久久久久久久99999999 | 成人精品影视 | 成人在线视频观看 | 在线激情av电影 | 亚洲国产网址 | 五月婷婷丁香综合 | 日韩一级网站 | 九九热.com | 97**国产露脸精品国产 | 特黄特色特刺激视频免费播放 | 在线a视频| 国产主播大尺度精品福利免费 | 久久人操 | 日韩中文字幕视频在线 | 中文在线√天堂 | 国产精品视频免费 | 天堂网av 在线 | 久久精品男人的天堂 | 97av精品 | 国产精品久久久久久久久久妇女 | 国产成人久久久久 | 午夜av在线| 国产999精品久久久影片官网 | 天天色成人网 | 在线观看中文字幕第一页 | 五月婷婷在线观看视频 | av中文天堂 | 中文字幕日韩一区二区三区不卡 | 中文字幕在线观看视频一区 | 亚洲 欧美 变态 国产 另类 | 99久久精品视频免费 | 日韩av一区二区三区在线观看 | 国产成人精品亚洲a | 国产一区免费视频 | 国产精品久久电影网 | 亚洲综合最新在线 | 免费在线一区二区 | 中文字幕在线免费观看视频 | 91黄色小视频 | 狂野欧美激情性xxxx | 国产97在线播放 | 国产成人三级一区二区在线观看一 | 91毛片在线| 精品一区二区亚洲 | 91香蕉视频在线 | 国产 日韩 欧美 自拍 | 精品视频在线观看 | 97视频免费在线看 | 亚洲片在线观看 | 国产专区精品视频 | a视频在线| 91亚洲欧美激情 | 91精品免费在线视频 | 看国产黄色片 | 四虎在线观看网址 | 成人小电影在线看 | 亚洲国产无 | 中文在线a天堂 | 久久国产精品久久w女人spa | 特级毛片网| 狠狠躁夜夜av | 少妇搡bbb | 久久中文字幕视频 | 国产一区二区视频在线 | 国产人在线成免费视频 | 国产色视频一区二区三区qq号 | 国产免费嫩草影院 | 麻豆视频91 | 国产精品日韩在线观看 | 亚洲国产精品一区二区久久hs | 欧美国产日韩激情 | 亚洲va在线va天堂va偷拍 | 在线 高清 中文字幕 | 久久久久久久久电影 | 久久av免费 | 最新日本中文字幕 | 999免费视频 | www国产亚洲精品久久麻豆 | 国产日本在线观看 | 亚洲天堂香蕉 | 久久久久日本精品一区二区三区 | 欧美 亚洲 另类 激情 另类 | 亚洲一区二区三区四区在线视频 | 91av在线视频免费观看 | 日韩影视在线 | 久久高清国产视频 | 99热精品久久 | 日韩欧美国产精品 | 亚洲一区二区视频在线 | 探花国产在线 | 在线视频欧美亚洲 | 最近中文字幕高清字幕在线视频 | 国产婷婷精品 | 日韩av中文在线观看 | 18国产精品福利片久久婷 | 成人国产精品免费 | 中文字幕久久亚洲 | 中文字幕一区2区3区 | av一区二区三区在线播放 | 视频二区在线视频 | 成人免费一级 | 久久一区国产 | 麻豆视频入口 | 成人综合日日夜夜 | 日韩免费视频在线观看 | 日韩精品一区二区三区中文字幕 | 99久热在线精品视频 | 不卡精品 | 91视频专区 | 91在线91 | 色综合激情网 | 亚洲成人一二三 | 国产亚洲视频系列 | 97精品国产97久久久久久粉红 | 婷婷久久一区二区三区 | 婷婷日 | 成人一区电影 | 国产中文字幕在线 | 97在线观看 | 欧美极品在线播放 | 福利av影院| 久久久久免费精品视频 | 午夜精品久久久 | 国产一级黄色片免费看 | 在线性视频日韩欧美 | 天天做综合网 | 四虎国产精品成人免费4hu | 天天射天天射天天 | 日日爽日日操 | 成人黄色电影在线播放 | 国产精品久久久精品 | 天天干天天干天天 | 中文字字幕在线 | 日韩3区 | 91麻豆精品国产91久久久无限制版 | 在线观看一区 | 久久久影片 | 婷婷在线资源 | 国产xx视频| 人人干狠狠操 | 亚洲专区免费观看 | 日本中文一区二区 | 97超碰免费在线 | 日本精a在线观看 | 国产不卡av在线 | 欧美日韩一区二区视频在线观看 | 午夜免费在线观看 | 国产精品情侣视频 | 成年人在线免费视频观看 | 人人插人人做 | 综合网天天射 | 久久久久久美女 | 天天色草| 成人av网站在线观看 | 国产一级久久 | 久久er99热精品一区二区 | 国产精品免费视频久久久 | 国产高清专区 | 久久久久久久久久久免费视频 | 99精品系列 | 九九99| 欧美日韩伦理一区 | 人人讲下载 | 国产亚洲精品久久19p | 久久久鲁 | 久久日韩精品 | 亚洲成av | 特级a毛片 | 在线观看中文字幕av | 亚洲黄网址 | 色999五月色 | 亚洲视频在线免费看 | 黄色小说视频网站 | 日韩二区精品 | 天天操,夜夜操 | 欧美一级免费片 | 免费看的黄网站软件 | 一区二区三区免费播放 | 黄色成人免费电影 | 黄a在线观看 | 91丨九色丨高潮丰满 | 玖玖视频 | 黄色av电影一级片 | 综合色在线 | 欧洲成人av | 欧美aaa大片 | 视频在线观看入口黄最新永久免费国产 | 99久精品视频 | 在线日韩 | 国产欧美日韩精品一区二区免费 | 在线韩国电影免费观影完整版 | 成人福利在线观看 | 中文字幕亚洲精品在线观看 | 西西444www大胆高清图片 | 日韩啪啪小视频 | 天天草天天干天天射 | 久草在线高清 | 国产高清在线不卡 | 午夜精品久久久久久久99 | 一级片视频免费观看 | 日韩精品黄 | 正在播放亚洲精品 | 国产成人精品一区在线 | 久久久久久影视 | 日韩欧美综合精品 | 天堂av网站 | 黄色软件视频大全免费下载 | 亚洲精品在线看 | 日韩专区av | www.97色.com | 日本乱视频 | 午夜精品视频一区 | 天天射射天天 | 丁香六月网 | 国产一区精品在线观看 | 91免费观看| 免费视频97 | 涩涩网站在线看 | 国产免费一区二区三区最新6 | 97色资源| 欧美日韩色婷婷 | 国产福利精品一区二区 | 丁香婷婷综合激情 | 激情综合国产 | 在线看毛片网站 | 免费91麻豆精品国产自产在线观看 | 日韩欧美高清在线观看 | 中文字幕资源网 国产 | 日韩大片在线播放 | 亚洲国产中文字幕在线视频综合 | 欧美激情视频一二区 | 91成人小视频 | 狠狠色丁香久久婷婷综合五月 | 国产黄在线播放 | 天天干,天天射,天天操,天天摸 | 国产成人在线观看 | 天天操天天干天天操天天干 | 国产高清在线一区 | 九九九九免费视频 | 免费国产在线视频 | 亚洲免费在线观看视频 | 国产成人一区二区三区 | 91经典在线 | 亚洲热久久 | 欧洲激情综合 | 久久成人精品视频 | 日韩av电影免费观看 | 九九九九九九精品任你躁 | 亚洲狠狠| 黄色一级大片在线免费看产 | 成年人免费观看国产 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 在线视频 亚洲 | 国产一区二区精 | 欧美日韩性生活 | jizz18欧美18| 中文字幕在线观看播放 | 午夜视频色 | 国产成人av一区二区三区在线观看 | 日韩一级片大全 | 亚洲va欧美va人人爽 | 国产xvideos免费视频播放 | 黄色软件在线观看视频 | 日韩欧美在线视频一区二区 | 国产精品中文字幕在线 | 国产视频每日更新 | 婷婷丁香激情网 | 精品国产乱码久久久久 | 亚洲aⅴ一区二区三区 | 亚洲午夜久久久久久久久 | 夜夜爱av| 久久久精品一区二区 | 丁香资源影视免费观看 | 中文字幕91 | 国产成人99久久亚洲综合精品 | 91电影福利 | 国产小视频在线免费观看视频 | 亚洲国产欧美在线人成大黄瓜 | 精品福利国产 | 久久理论电影网 | 亚洲小视频在线观看 | 狠狠色丁香婷婷综合欧美 | 91久久久久久国产精品 | 久久人人爽人人 | 少妇bbbb | 日日操日日干 | 午夜久久福利 | 午夜精品一区二区三区在线观看 | 欧洲av在线 | 99热精品免费观看 | wwwwww色 | 国产破处视频在线播放 | 亚洲国产三级 | 日韩色中色 | 亚洲精品综合一二三区在线观看 | 天天插狠狠插 | 精品一区二区三区久久久 | 日韩精品在线看 | 国产色在线视频 | 成年人黄色大片在线 | 久一在线| 九九免费在线观看视频 | 中文字幕av播放 | 99综合视频 | 日本久久综合网 | 在线观看韩国av | 91激情小视频 | 亚洲精品五月天 | 午夜av免费观看 | 亚洲自拍av在线 | www.夜夜操 | 最新国产福利 | 久久国产视屏 | 婷五月激情 | 天天爱天天干天天爽 | 在线观看一级片 | 亚州人成在线播放 | 亚洲jizzjizz日本少妇 | 国产二区视频在线 | 国产三级视频在线 | 99精品视频免费 | 日本成址在线观看 | 欧美大片在线观看一区 | 国产色综合 | 日韩欧美高清视频在线观看 | 国产成人精品午夜在线播放 | 丁香5月婷婷久久 | 国产高清99 | 综合色站导航 | 日韩精品免费在线视频 | www久久99 | 亚洲精品网站 | 六月婷操| 97在线视频免费 | 最新av网址在线 | 国产裸体永久免费视频网站 | 在线观看日韩视频 | 欧美另类视频 | 99精品在线免费视频 | 日韩中文字幕免费电影 | 亚洲精品福利视频 | 人人爽人人搞 | 久久不射网站 | 亚洲va在线va天堂va偷拍 | 中文字幕 国产视频 | 香蕉视频在线免费 | 1024手机基地在线观看 | 99综合电影在线视频 | 91成人网在线观看 | 日韩一区视频在线 | 国产精品日韩欧美 | 亚洲在线看 | 久久久久国产精品午夜一区 | 日韩在线观看高清 | 久久av高清 | 在线精品亚洲一区二区 | av在线a | 天天操天天射天天 | 国产在线观看91 | 久久国产露脸精品国产 | 97在线观视频免费观看 | 国产一区在线视频播放 | 国产精品日韩在线 | 一级全黄毛片 | 免费97视频 | 性色av香蕉一区二区 | 国产中文字幕免费 | 久久久久亚洲精品国产 | 91九色视频在线播放 | 激情婷婷欧美 | 久久综合福利 | 久久精品国产一区 | 日韩欧美高清视频在线观看 | 国产日韩在线一区 | 色a资源在线 | av 一区二区三区 | 久草精品在线播放 | 99这里只有精品视频 | 欧美色图另类 | 国产精品破处视频 | 欧美国产一区二区 | 97人人澡人人爽人人模亚洲 | 日韩欧美第二页 | 97超碰在线久草超碰在线观看 | 亚洲精品午夜久久久久久久 | 欧美一级片在线 | 国模视频一区二区 | 国内精品久久久久久久久久清纯 | 黄色网在线免费观看 | 少妇bbbb搡bbbb桶 | 狠狠色丁香久久婷婷综 | 精品国产一区二区三区四区vr | 探花视频在线版播放免费观看 | 中文字幕免费高 | 在线观看91精品国产网站 | 久久精品一 | 免费91麻豆精品国产自产在线观看 | 在线观看中文字幕2021 | 在线看片中文字幕 | 日韩精品一区二区三区高清免费 | 波多野结衣一区三区 | 91精品免费在线视频 | 国产一区二区不卡视频 | 精品国产精品一区二区夜夜嗨 | 久久草网站 | 色综合久久久久网 | 色综合天天综合在线视频 | 国产精品综合久久久 | 欧美色黄 | 黄色小说免费在线观看 | 国产你懂的在线 | 久久深夜福利免费观看 | 国产又粗又猛又爽又黄的视频免费 | 在线免费观看视频一区 | av免费看电影 | 日韩黄色大片在线观看 | 国产伦精品一区二区三区四区视频 | 国产一级片免费观看 | 国内精品视频在线 | 精品久久久久久久久久久院品网 | 99久久久久国产精品免费 | 色视频网站在线观看一=区 a视频免费在线观看 | 4hu视频| 国产精品一区二区免费在线观看 | 丁香六月婷婷开心 | 一区二区三区四区五区在线 | 国产成人黄色 | 中文亚洲欧美日韩 | 日韩欧美视频免费看 | 91夫妻视频 | 日韩黄色免费在线观看 | 久久视了 | 免费网站色 | 成年人国产在线观看 | 97视频资源| 日韩色在线 | 久草网视频 | 涩涩网站在线播放 | 国产成人av免费在线观看 | 美女国产网站 | 亚洲精品视频在线播放 | 久久精品欧美一区 | 中文字幕第一 | 亚洲天天在线日亚洲洲精 | 欧美人体xx | 久久99在线 | 亚洲激情中文 | 欧美日韩网址 | 久久电影中文字幕视频 | 波多野结衣久久资源 | 天干啦夜天干天干在线线 | 亚洲精品婷婷 | 久久久精品小视频 | 中文乱码视频在线观看 | 96亚洲精品久久久蜜桃 | 亚洲伊人成综合网 | 97在线观看免费观看 | 一区二区视频欧美 | 福利电影一区二区 | 亚洲激情综合网 | 精品久久1 | 精品免费久久久久久 | 国产一级在线 | 黄色日本片| 精品免费视频. | 国产 日韩 欧美 在线 | 超碰在线色 | 亚洲精品在线一区二区三区 | 黄色片视频在线观看 | 日批网站在线观看 | 91网在线观看 | 欧美一区二区在线看 | 五月婷婷丁香 | 成人免费一级 | 国产在线观看国语版免费 | 天天干天天射天天操 | 久久免费播放 | 亚洲黄色在线观看 | 在线观看www视频 | 黄色a大片 | 最新日韩在线 | 日韩精品欧美专区 | 丁香在线视频 | 少妇bbbb揉bbbb日本 | 美女久久久久久久久久 | 日韩精品一区二区三区外面 | 免费一级日韩欧美性大片 | 国产精品日韩欧美一区二区 | 国产精品久久久久久爽爽爽 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 在线色视频小说 | 天天天干天天射天天天操 | 网站在线观看你们懂的 | 99久久精品久久久久久动态片 | 日韩大片在线播放 | 黄色网址在线播放 | 国产淫片免费看 | 久久免费毛片视频 | 国产成人精品一区二区三区在线 | 欧美人zozo | 四虎小视频 | 最新国产精品拍自在线播放 | 亚洲成人av免费 | 亚洲精品乱码久久久久久高潮 | 一区二区三区在线观看免费视频 | 在线视频日韩一区 | 日日摸日日添日日躁av | 蜜臀久久99精品久久久无需会员 | 国产视频美女 | 人人狠| 中文视频在线 | 亚洲婷婷免费 | 国产精品一区二区av日韩在线 | 久久天天综合网 | 狠狠色噜噜狠狠狠合久 | 成人日批视频 | 日韩丝袜 | 国产做aⅴ在线视频播放 | 在线视频在线观看 | 91香蕉视频720p | 亚洲狠狠丁香婷婷综合久久久 | 国产成人精品亚洲a | 天堂av网址 | 免费a级观看 | 射射射综合网 | 国产视频在线观看一区二区 | 亚洲综合精品视频 | 91 在线视频| 久久欧美综合 | 日韩中文字幕第一页 | 久久精品99国产精品亚洲最刺激 | 国产精品成人av在线 | 国产精品伦一区二区三区视频 | 色视频国产直接看 | 97超碰人人爱 | 在线观看精品黄av片免费 | 少妇bbbb揉bbbb日本 | 久久区二区 | 久久精品中文字幕一区二区三区 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 黄色美女免费网站 | www五月天婷婷 | 三上悠亚一区二区在线观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | www.91国产 | 在线观看免费一区 | 日本久久成人中文字幕电影 | av一级在线 | 国产精品99久久久精品 | 久久精品99北条麻妃 | 亚洲一级片在线观看 | 国产在线精品国自产拍影院 | 国产美女免费观看 | 人人玩人人添人人澡97 | 天堂网一区二区三区 | 免费久久网 | 一区二区免费不卡在线 | 四虎成人精品永久免费av九九 | 欧美二区在线播放 | 99久久精品免费看 | 激情五月婷婷综合网 | 亚洲精品福利视频 | 狠狠操91| 午夜10000| 国产成人精品久久久久蜜臀 | 国产精品 久久 | 在线亚州 | 国产一区视频在线 | 麻豆精品在线 | 欧美日韩一区二区在线观看 | 99精品免费观看 | 免费麻豆 | 午夜久久美女 | 99视频在线观看免费 | 国产在线不卡精品 | 亚洲精品动漫久久久久 | 91免费国产在线观看 | 免费看成人片 | 中文字幕 在线看 | 亚洲最大av在线播放 | 五月婷在线观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 中文字幕在线色 | 91毛片在线观看 | 亚洲经典在线 | 免费十分钟 | 999视频在线播放 | 人人狠 | 久久综合狠狠综合久久激情 | 天天综合五月天 | 亚洲国产精品第一区二区 | 亚洲精品免费视频 | 天天综合久久 | 亚洲精品午夜久久久久久久 | 韩日精品在线 | 国产精品久久久久婷婷 | 国产91精品一区二区 | 嫩草伊人久久精品少妇av | 精品理论片 | 在线免费观看黄色av | 久久试看| 能在线看的av | a黄色一级片 | 亚洲精品麻豆视频 | 黄色视屏在线免费观看 | 久久久精品国产免费观看同学 | 国产999精品视频 | 国产精品成人一区二区三区吃奶 | 五月天激情视频在线观看 | 三级av网站| h视频在线看 | 色五月色开心色婷婷色丁香 | 久久成人免费视频 |