久久精品中文字幕av,av.涩涩涩涩涩涩涩涩,亚洲国产日韩欧美精品成人久久久,成人福利电影免费在线观看,日产国产原创av,日韩av午夜激情,bt天堂中文字幕,超级碰人妻在线视频,欧美老熟妇久久一区二区

# 攔截器 完成上節(jié)的作業(yè)后,我們發(fā)現(xiàn)我們好像做了一個比較笨的工作。因為如果按在個人中心中加入 Login組件獲取的token的話,則意味著我們以后所有需要用戶認證的請求,都需要手動在請求時加入`x-auth-token`。而以懶人自居的我們,怎么能容忍這么冗余的動作呢? 除此以外,如果我們在每個需要認證的請求上都手動的加入`x-auth-token`,則會大幅降低整個項目的靈活性。比如后臺哪個抽瘋說咱換個認證方式,不使用`x-auth-token`了。這時候我們希望自己能做的不是罵街,而是能快速的響應這種需求。 > 世間唯有變化是永恒不變的。 為此,我們再來看看這個cookie的原理: ![image-20210308143321976](https://img.kancloud.cn/fa/ac/faac94d9e1c8427c35175bf9f061ccd9_2510x1644.png) 不然發(fā)現(xiàn)瀏覽器在處理cookie時,與用戶是否請求登錄無關。只是有請求,瀏覽器變會自動處理cookie,而不去管這個請求到底在實現(xiàn)什么邏輯功能。 其實我們當前后臺為我們提供的`x-auth-token`也是這樣的。我們在前臺向后臺發(fā)起任意請求時,后臺都會按上圖處理cookie的邏輯來處理`x-auth-token`。 那么,我們便可以使用Angular提供的**Interceptor攔截器**來快速完成在每次請求時自動處理`x-auth-token`的功能。 ## Interceptor攔截器 Angular提供的攔截器,可以在前臺發(fā)起任何的http請求時進行攔截。 ![image-20210309104836454](https://img.kancloud.cn/1b/86/1b86f3c365fbc64f972e3a6c7e8734d4_1474x456.png) 我們可以為Angular中的模塊配置多個攔截器,這些攔截器能夠?qū)ttp請求以及響應進行攔截。近而提供:監(jiān)視請求、響應數(shù)據(jù);改變請求、響應數(shù)據(jù)等功能。比如在生產(chǎn)項目,我們可以使用攔截器來完成監(jiān)聽長請求、監(jiān)聽用戶需要授權(quán)、顯示loading等功能。 ![image-20210309110421080](https://img.kancloud.cn/11/b7/11b78fa5cc2228b8257f6e983ac6d590_1714x868.png) 除此以外,還可以在攔截器中加入緩存: ![image-20210309121743087](https://img.kancloud.cn/9c/7f/9c7f112fc0c1673d39e0ca30649f0002_1420x728.png) `x-auth-token`實現(xiàn)正是攔截器的基于監(jiān)視請求、響應數(shù)據(jù)、改變請求數(shù)據(jù)三個基本的功能。 ![image-20210309122223223](https://img.kancloud.cn/4b/ad/4bad19c7707679eb08d5f21d0362699e_1878x722.png) 其處理流程如下: ![image-20210309122751092](https://img.kancloud.cn/ed/61/ed61e10ba6cd654d64f02ade991b22da_1622x1134.png) ## 定義攔截器 打開shell并定位到`src/app`文件夾,使用以下命令初始化xAuthToken攔截器: ```bash panjiedeMacBook-Pro:app panjie$ pwd /Users/panjie/github/mengyunzhi/angular11-guild/first-app/src/app panjiedeMacBook-Pro:app panjie$ ng g interceptor xAuthToken CREATE src/app/x-auth-token.interceptor.spec.ts (442 bytes) CREATE src/app/x-auth-token.interceptor.ts (415 bytes) ``` 在`x-auth-token.interceptor.ts`打如下斷點,以驗證其是否執(zhí)行: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.ts @@ -13,6 +13,7 @@ export class XAuthTokenInterceptor implements HttpInterceptor { constructor() {} intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { + console.log('xAuthTokenInterceptor is called'); return next.handle(request); } } ``` 然后在任意測試模塊中加入此攔截器,比如我們將其加入到login組件對應的動態(tài)測試模塊中: ```typescript +++ b/first-app/src/app/login/login.component.spec.ts -import {HttpClientModule} from "@angular/common/http"; +import {HttpClientModule, HTTP_INTERCEPTORS} from "@angular/common/http"; @@ -16,6 +16,9 @@ describe('LoginComponent', () => { imports: [ FormsModule, HttpClientModule + ], + providers: [ + {provide: HTTP_INTERCEPTORS, useClass: XAuthTokenInterceptor, multi: true} ] }) .compileComponents(); @@ -44,7 +47,7 @@ describe('LoginComponent', () => { expect(component.onSubmit).toHaveBeenCalledTimes(1); }); - it('onSubmit 用戶登錄', () => { + fit('onSubmit 用戶登錄', () => { // 啟動自動變更檢測 fixture.autoDetectChanges(); component.teacher = {username: '張三', password: 'codedemo.club'} as Teacher; ``` `providers`譯為**具有某種能力的提供者**,我們在其中聲明了一個具有提供`HTTP_INTERCEPTORS HTTP`**攔截器**能力的提供者`XAuthTokenInterceptor`,使用`multi: true`來表時當前提供者為多個具有這種能力的一個(使用該方案保證了可以定義多個攔截器)。 Angular在發(fā)起Http請求時,會查詢當前模塊是否有`HTTP_INTERCEPTORS`的提供者, 如果有則會使用該提供者對請求進行攔截。我們使用`ng t`來觸發(fā)該單元測試: ![image-20210309124446847](https://img.kancloud.cn/ae/c9/aec9fb252514895df1d590a72d746bc6_952x242.png) 控制臺的成功打印了信息,表明在發(fā)請http請求時該攔截器中的代碼被調(diào)用,攔截器起作用了。 ## 初識Observable ```typescript intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { ?? console.log('xAuthTokenInterceptor is called'); return next.handle(request); } ``` intercept方法中有兩個參數(shù),顧名思義第一個參數(shù)為請求,第二個參數(shù)為下一個處理者(可能是攔截器)。所以我們可以通過request來獲取關于請求的相關信息,那么如何攔截到響應信息呢?這要深入學習下`Observable`這個返回值類型。 其實我們早早的就接觸了`Observable`,該類型是設計模式中**觀察者模式**在js中的具體體現(xiàn)。我們可以在此返回值上調(diào)用`subscribe(success, error, complete)`方法。當`Observable`發(fā)送數(shù)據(jù)時,則會觸發(fā)`success`;當`Observable`發(fā)生錯誤時,則會調(diào)用`error` ;此外,`Observable`還會發(fā)送一個`完成`的通知,當`Observable`發(fā)送完所有的數(shù)據(jù)時,就會調(diào)用`complete`。 所以才有了我們在進行http請求時的如下代碼: ```typescript httpClient.get(url) .subscribe(data => console.log('成功', data), error => console.log('失敗', error), () => console.log('數(shù)據(jù)發(fā)送完畢')); ``` 也就說`httpClient.get()`方法實際上返回了一個`Observable`,當請求成功時,`Observable`開始發(fā)送數(shù)據(jù),觸發(fā)`data => console.log('成功', data)`;請求失敗時,觸發(fā)`error => console.log('失敗', error),`;在http請求中無論成功或是失敗,后臺都會一次性的把數(shù)據(jù)發(fā)送回來,也就說請求的過程都完成了,所以`() => console.log('數(shù)據(jù)發(fā)送完畢')`在上述代碼中必然執(zhí)行。 語言描述是空洞的,我們在攔截器對應的單元測試文件中建立如下測試代碼: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.spec.ts @@ -1,6 +1,7 @@ import {TestBed} from '@angular/core/testing'; import {XAuthTokenInterceptor} from './x-auth-token.interceptor'; +import {of} from 'rxjs'; describe('XAuthTokenInterceptor', () => { beforeEach(() => TestBed.configureTestingModule({ @@ -9,8 +10,17 @@ describe('XAuthTokenInterceptor', () => { ] })); - it('should be created', () => { + fit('should be created', () => { const interceptor: XAuthTokenInterceptor = TestBed.inject(XAuthTokenInterceptor); expect(interceptor).toBeTruthy(); + + // 定義一個observable,在其上調(diào)用subscribe將得到數(shù)字1 + const observable = of(1); + observable.subscribe( + data => console.log(data), + error => { + }, + () => console.log('complete') + ); }); }); ``` 執(zhí)行結(jié)果如下: ![image-20210309142900492](https://img.kancloud.cn/a6/98/a698371bdd7d5de98dff0f8f41e7f57c_832x164.png) ## 再識管道 在V層顯示性別的時候,我們接觸了管道的概念。數(shù)據(jù)由第一個管道的這頭流入,最后由最后一個管道的那頭流出。`Observable`也支持了管道的思想,我們可以在`Observable`類型上添加任意多個管道,它們使得`Observable`在向外發(fā)送數(shù)據(jù)前,先將這些數(shù)據(jù)依次通過這些管道。 `Observable`提供了`pipe()`方法來快速的添加管道: ```typescript - const observable = of(1); + const observable = of(1).pipe(); ``` 如果我們想使值在管道中發(fā)生變化,則可以使用`map()`管道。在`Observable`的世界里,所有的管道都被習慣稱為`操作符`。`map()`便是一個可以改變數(shù)據(jù)值的操作符: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.spec.ts @@ -2,6 +2,7 @@ import {TestBed} from '@angular/core/testing'; import {XAuthTokenInterceptor} from './x-auth-token.interceptor'; import {of} from 'rxjs'; +import {map} from 'rxjs/operators'; describe('XAuthTokenInterceptor', () => { beforeEach(() => TestBed.configureTestingModule({ @@ -15,7 +16,7 @@ describe('XAuthTokenInterceptor', () => { expect(interceptor).toBeTruthy(); // 定義一個observable,在其上調(diào)用subscribe將得到數(shù)字1 - const observable = of(1).pipe(); + const observable = of(1).pipe(map(input => input * 2)); observable.subscribe( ``` `map`操作符中的參數(shù)類型是個回調(diào)函數(shù),該函數(shù)的參數(shù)`input`為流入,而方法中的函數(shù)則為流出,所以最終控制臺打印如下: ![image-20210309143833367](https://img.kancloud.cn/d0/c5/d0c50a2841d4ade9999fb36483b7fafc_806x188.png) 其實`Observable`并不是Angular的特性,而是屬于一個叫做`rxjs`的分支。我們可以搜索關鍵字`rxjs`以獲取更多的信息,`rxjs`同時提供了多的記不過來的操作符來滿足現(xiàn)實編程中的各種環(huán)境。 ## tap操作符 我們再回來攔截器攔截響應的需求上來。攔截器的如下代碼返回了一個`Observable`,http請求的數(shù)據(jù)將通過該`Observable`向前返回。而我們則可以利用`Observable`可設置管道的特性,在其上設置一個監(jiān)聽管道,以起到監(jiān)聽header中的x-auth-token的目的。而rxjs提供的tap操作符的作用正合適: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.ts @@ -6,6 +6,7 @@ import { HttpInterceptor } from '@angular/common/http'; import { Observable } from 'rxjs'; +import {tap} from 'rxjs/operators'; @Injectable() export class XAuthTokenInterceptor implements HttpInterceptor { @@ -14,6 +15,6 @@ export class XAuthTokenInterceptor implements HttpInterceptor { intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { console.log('xAuthTokenInterceptor is called'); - return next.handle(request); + return next.handle(request).pipe(tap(input => console.log('監(jiān)聽到響應', input))); } } ``` 繼續(xù)使用login組件單元測試文件進行測試: ```typescript +++ b/first-app/src/app/login/login.component.spec.ts @@ -47,7 +47,7 @@ describe('LoginComponent', () => { expect(component.onSubmit).toHaveBeenCalledTimes(1); }); - it('onSubmit 用戶登錄', () => { + fit('onSubmit 用戶登錄', () => { // 啟動自動變更檢測 fixture.autoDetectChanges(); component.teacher = {username: '張三', password: 'codedemo.club'} as Teacher; ``` ![image-20210309144817908](https://img.kancloud.cn/24/92/2492d23a3d1e27dcb2fc9af28bb84690_1094x250.png) ## HttpEvent `Observable`支持泛型,當前攔截器泛型對應的為`HttpEvent<unknown>`: ```typescript intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { ``` `HttpEvent`是個由5種類型組成的混合類型: ```typescript export declare type HttpEvent<T> = HttpSentEvent | HttpHeaderResponse | HttpResponse<T> | HttpProgressEvent | HttpUserEvent<T>; ``` 在此并不是所有的返回類型都攜帶了header信息(可在IDE中依次點擊其類型查看,不在詳細闡述原因),攜帶有header信息的信息為:`HttpHeaderResponse`以及`HttpResponse`,這兩個類型又全部繼承于`HttpResponseBase`,所以在進行監(jiān)聽時,我們僅監(jiān)聽這兩種類型的數(shù)據(jù)。 在TypeScirpt中,可以使用`instance of`對類型進行判斷。 ## 完成功能 當一切**知識盲區(qū)**都被我們解決掉的時候,完成功能則成為了最簡單的一環(huán)。下面,我們實現(xiàn)x-auth-token攔截器的功能: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.ts @@ -1,20 +1,48 @@ -import { Injectable } from '@angular/core'; +import {Injectable} from '@angular/core'; import { HttpRequest, HttpHandler, HttpEvent, - HttpInterceptor + HttpInterceptor, HttpResponseBase } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import {Observable} from 'rxjs'; import {tap} from 'rxjs/operators'; @Injectable() export class XAuthTokenInterceptor implements HttpInterceptor { + /** + * 由緩存中獲取token,防止頁面刷新后失效 + */ + private token = window.sessionStorage.getItem('x-auth-token'); - constructor() {} + constructor() { + } intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { - console.log('xAuthTokenInterceptor is called'); - return next.handle(request).pipe(tap(input => console.log('監(jiān)聽到響應', input))); + if (this.token !== null) { + request.headers.set('x-auth-token', this.token); + } + return next.handle(request).pipe(tap(input => { + // 僅當input類型為HttpResponseBase,才嘗試獲取token并更新 + if (input instanceof HttpResponseBase) { + const httpHeader = input.headers; + const xAuthToken = httpHeader.get('x-auth-token'); + if (xAuthToken !== null) { + this.setToken(xAuthToken); + } + } + })); + } + + /** + * 設置token + * 如果接收到了新的token則更新,否則什么也不做 + * @param xAuthToken token + */ + private setToken(xAuthToken: string): void { + if (this.token !== xAuthToken) { + this.token = xAuthToken; + window.sessionStorage.setItem('x-auth-token', this.token); + } } } ``` ## 測試 任何沒有經(jīng)過測試代碼都是坑隊友的利器。由于我們夢想著攔截器會有登錄組件、個人中心組件中自動發(fā)揮作用,所以我們在此應該使用`ng s`來完成測試。 ### 添加攔截器 為使其在`ng s`生效,則需要將其配置到`AppModule`中: ```typescript +++ b/first-app/src/app/app.module.ts @@ -3,7 +3,7 @@ import {NgModule} from '@angular/core'; import {AppRoutingModule} from './app-routing.module'; import {AppComponent} from './app.component'; -import {HttpClientModule} from '@angular/common/http'; +import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http'; import {AddComponent} from './add/add.component'; import {FormsModule} from '@angular/forms'; import {EditComponent} from './edit/edit.component'; @@ -12,6 +12,7 @@ import {LoginComponent} from './login/login.component'; import {IndexComponent} from './index/index.component'; import { PersonalCenterComponent } from './personal-center/personal-center.component'; import { SexPipe } from './personal-center/sex.pipe'; +import {XAuthTokenInterceptor} from './x-auth-token.interceptor'; @NgModule({ @@ -31,7 +32,9 @@ import { SexPipe } from './personal-center/sex.pipe'; FormsModule, RouterModule ], - providers: [], + providers: [ + {provide: HTTP_INTERCEPTORS, useClass: XAuthTokenInterceptor, multi: true} + ], bootstrap: [IndexComponent] }) export class AppModule { ``` ### 刪除冗余代碼 然后刪除個人中心組件進行后臺請求時手動添加header的代碼,將其恢復為: ```typescript +++ b/first-app/src/app/personal-center/personal-center.component.ts ngOnInit(): void { const url = 'http://angular.api.codedemo.club:81/teacher/me'; this.httpClient.get<Teacher>(url) .subscribe(teacher => { console.log('請求當前登錄用戶成功'); this.me = teacher; }, error => console.log('請求當前登錄用戶發(fā)生錯誤', error)); } ``` ### 定制路由 ```typescript +++ b/first-app/src/app/app-routing.module.ts @@ -2,6 +2,7 @@ import {NgModule} from '@angular/core'; import {Routes, RouterModule} from '@angular/router'; import {AddComponent} from './add/add.component'; import {EditComponent} from './edit/edit.component'; +import {PersonalCenterComponent} from './personal-center/personal-center.component'; const routes: Routes = [ { @@ -11,6 +12,10 @@ const routes: Routes = [ { path: 'edit/:id', component: EditComponent + }, + { + path: 'personal-center', + component: PersonalCenterComponent } ]; ``` ## 測試 使用正常的用戶名密碼登錄后,打開http://localhost:4200/personal-center,卻在控制臺中發(fā)生了錯誤: ![image-20210309151920846](https://img.kancloud.cn/e4/5e/e45e4b894e03b4391d38538385bdd694_2450x226.png) 此時,我們正常人做的一定是去盯代碼,然后開始意念是哪塊的代碼出了錯誤,接著就開始了萬劫不復之旅。正確的做法應該是去科學的`debug`。 既然用戶認證發(fā)生了錯誤,那么說明在請求時要么沒有帶入`x-auth-token`信息,要么帶入的`x-auth-token`是無效的。所以我們第一步應該去找到網(wǎng)絡選項卡,并找到個人中心的請求,查看其請求頭中是否存在`x-auth-token`: ![image-20210309152357043](https://img.kancloud.cn/32/af/32af8afddb08972bf9c95fdfaa5b3068_3252x658.png) 由上圖得知并未攜帶`x-auth-token`。那么未攜帶的原因有兩種:1. 首次與后臺交互時攔截器并未成功緩存這個`x-auth-token`;2. 雖然攔截器緩存了,并由于書寫失誤,在請求時忘了加入此`x-auth-token`了。攔截器是否緩存了該值應該去控制臺中的sessionStorege中查看: ![image-20210309152631206](https://img.kancloud.cn/18/e4/18e4fababdd0473a62e47979cab8bd42_2586x594.png) 可見,瀏覽器已存儲該值。則問題應該出現(xiàn)在攔截器請求時加入x-auth-token的代碼上了,那就乖乖的打斷點吧: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.ts @@ -20,7 +20,9 @@ export class XAuthTokenInterceptor implements HttpInterceptor { intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { if (this.token !== null) { + console.log('設置token', this.token); request.headers.set('x-auth-token', this.token); + console.log(request.headers.get('x-auth-token')); } return next.handle(request).pipe(tap(input => { // 僅當input類型為HttpResponseBase,才嘗試獲取token并更新 ``` 結(jié)果另我們想不到: ![image-20210309152929200](https://img.kancloud.cn/d2/ef/d2efe71dd267f03bf96f0bfccd05c9c5_3234x144.png) 控制臺顯示了如上信息,表明`if`中的程序塊已執(zhí)行;23行中顯示了`this.token`的值;24行設置值后,25行卻獲取到了`null`。該情況已經(jīng)超出了我們的認識,那么下一步做的就是去相應的google了: ![image-20210309153234274](https://img.kancloud.cn/f7/45/f7458f6bcc531b5120b8da6dd6bddead_2636x432.png) 除此以外,另外一種更便捷的方法是讀官方文檔,我們點擊`request.headers.set`后進入其源碼,查看注釋信息如下: ```typescript /** * Sets or modifies a value for a given header in a clone of the original instance. * If the header already exists, its value is replaced with the given value * in the returned object. * * @param name The header name. * @param value The value or values to set or overide for the given header. * * @returns A clone of the HTTP headers object with the newly set header value. */ ``` 譯文: ```typescript /** * 在源實際的 克隆 上設置或是修改header值 * If the header already exists, its value is replaced with the given value * in the returned object. * * @param name The header name. * @param value The value or values to set or overide for the given header. * * @returns 一個HTTP頭對象的 克隆,該克隆對象中header值是設置過的 */ ``` 原來更快的解決方案在于官方文檔中!由于` request.headers.set('x-auth-token', this.token);`并未改變原實例`request.headers`,所以在原實例上獲取`x-auth-token`仍為null,也就是說請求并未帶入`x-auth-token`。原因有了,解決方案當然也就隨著頁出來: ![image-20210309153950122](https://img.kancloud.cn/62/7f/627f6cb3fb30b3e8798b3b81f9bc3547_2204x292.png) 好事多磨,當我們想使用返回的新實例來設置`request.header`時,卻又發(fā)生了read-only錯誤。這并不是angular的專利,在其它的框架中也是不允許我們直接對請求對象修改的。好在Angular提供了clone方法來解決此問題: ```typescript +++ b/first-app/src/app/x-auth-token.interceptor.ts @@ -21,7 +21,7 @@ export class XAuthTokenInterceptor implements HttpInterceptor { intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { if (this.token !== null) { console.log('設置token', this.token); - request.headers.set('x-auth-token', this.token); + request = request.clone({setHeaders: {'x-auth-token': this.token}}); console.log(request.headers.get('x-auth-token')); } return next.handle(request).pipe(tap(input => { ``` 我們關閉原窗口(防止登錄過期問題),再重新打開一個,訪問http://localhost:4200/personal-center進行測試。 ![image-20210309154914944](https://img.kancloud.cn/fe/b5/feb5e717eadb0e7e693bdb701640e0b9_3764x926.png) 成功的請求到個人中心的信息,盡情地享受這種喜悅吧。 ## 本節(jié)作業(yè) 1. 在前面的已學教程中,我們成功的規(guī)避掉了設置header時原h(huán)eader實例并未改變的情況,請把它們找出來。 2. 本節(jié)最后一張圖片打印了兩次token值,請解釋其原因。 3. 在同一個瀏覽器的兩個窗口中分別打開http://localhost:4200,A窗口中完成登錄后,在B窗口中刷新界面B窗口仍然需要登錄。但大多數(shù)我們所使用的應用(比如思否、京東等)并非如此,你能解釋這其中的原因嗎? | 名稱 | 地址 | | | --------------- | ------------------------------------------------------------ | ---- | | 請求攔截和響應 | [https://angular.cn/guide/http#intercepting-requests-and-responses](https://angular.cn/guide/http#intercepting-requests-and-responses) | | | Observable | [https://cn.rx.js.org/class/es6/Observable.js~Observable.html](https://cn.rx.js.org/class/es6/Observable.js~Observable.html) | | | Of | [https://cn.rx.js.org/class/es6/Observable.js~Observable.html#static-method-of](https://cn.rx.js.org/class/es6/Observable.js~Observable.html#static-method-of) | | | subscribe | [https://cn.rx.js.org/class/es6/Observable.js~Observable.html#instance-method-subscribe](https://cn.rx.js.org/class/es6/Observable.js~Observable.html#instance-method-subscribe) | | | Pipeable 操作符 | [https://cn.rx.js.org/manual/usage.html](https://cn.rx.js.org/manual/usage.html) | | | Map | [https://rxjs-cn.github.io/learn-rxjs-operators/operators/transformation/map.html](https://rxjs-cn.github.io/learn-rxjs-operators/operators/transformation/map.html) | | | 本節(jié)源碼 | [https://github.com/mengyunzhi/angular11-guild/archive/step4.5.zip](https://github.com/mengyunzhi/angular11-guild/archive/step4.5.zip) | |
91超碰免费在线播放| 色综合久久999| 最美人妻一区二区三区| 蜜桃黄色av网站免费播放| 日韩黄色一级大片| 久久久久国产亚洲av麻豆| 亚洲激情网在线播放| 一本大道av伊人久久综合| 搡老熟女一区二区三区四区视频| 欧美一区二区精品人妻免费视频| 久久av一区中文字幕| 亚洲狠狠婷婷综合久久a| 五月激情婷婷网络| 国产精品久久久久国产| 亚洲久久亚女同性| 日韩欧美三级一区二区在线观看| 日韩视频在线观看一区二区| 欧美日本韩国乱搞视频| 色婷婷久久久swag精品| 精品国产一区二区三区无码蜜桃| 高清视频在线观看一区二区三区| 国产精品久久久久久久久久网站| 丰满少妇精品一区二区| 国产精品网址在线观看| 制服丝袜亚洲欧美第一| 91在线精品国自产拍| 欧美视频 亚洲视频| 日韩欧美久久免费观看| 人妻日韩精品在线观看视频| 精品国产一区二区三区无码蜜桃 | 亚洲精品久久久久久久久蜜桃| 日韩a视频在线播放视频| 2020日本中文字幕| 欧美激情电影在线观看不卡| 日韩手机在线一区二区三区| 99精品视频69v精品视频| 丰满人妻av白石茉莉奈电影| 人妻熟女视频免费观看| 日本精品久久久久中人妻| 精品一区二区三区蜜桃臀的优势| 久久激情毛片大放送| 欧美熟妇人妻视频在线| 97人妻人人揉人人澡人人爽国产 | 麻豆中文字幕av在线| 精品久久精品久久久久| 亚洲欧美日韩一区17c| 91免费av在线观看| 初撮日本五十路人妻| 国产精品久久久久久久久久69| 91精品久久久久久五月天| 日韩在线播放视频1区| 日韩亚洲丝袜系列| 日韩人妻插舔激情午夜| 人妻精品少妇嫩草麻豆| 欧美人妻一区二区三区在线播放| 亚洲精品图片第十八页| 福利小视频国产一区| 99热在线精品免费观看| 国产有码av一区二区| 91中日在线中文字幕| 偷偷夜夜精品一区二区三区蜜桃| 91中文字幕制服诱惑| 91porny国产九色| 亚洲国模私拍视频| 国产精品久久久久久久漫画| 日韩色在线视频观看免费| 天天操天天干天天妻| 亚洲乳大丰满中文字幕少妇av| 蜜臀久久久久精品一区二区三区| 久久这里只有欧美精品| 亚洲aⅴ欧美综合一区二区三区| 国产av一区二区三区天美| 综合激情五月天久久| 欧美va亚洲va精品| 亚洲成a人片7777| 久久久久久久久人妻精品| 青青91免费视频| av色香蕉一区二区三区| 国产aⅴ爽av久久久久成| 久久久免费精品少妇| 我要看一级国产黄色绿像 | 丰满人妻av白石茉莉奈电影| 蜜桃av 1区二区| 蜜臀av一区二区三区人妻少妇| 大香蕉久草网一区二区三区| 亚洲天堂黄色免费| 91插插插操美女视频 | 欧美日韩在线卡一卡二卡三| 日韩在线免费视频精品| 国产精品久久久久久xxx| 天天做天天舔天天射| 欧美一区二区三区激情无套| 少妇高潮喷水久久久久久桃花| 日韩手机无线看视频| 208精品福利导航| 国产日韩欧美春色另类小说| 成人午夜激情福利片| 亚洲欧洲av在线| 国产免费一级a男人的天堂| 久操免费福利在线视频观看视频| 老熟女17页一91| 亚洲欧洲黄色图区| 精品999久久久一免费ww| 国产一级av国产免费| 精品999久久久一免费ww| 中文字幕久久91| 国产精品久久久久久久漫画| 久久亚洲AV成人无码| 少妇高潮一区二区三区99欧美| 少妇一区二区在线免费观看| 风间由美交换夫中文字幕| 中文字幕av久久爽爽| 日韩欧美爱爱视频免费观看| 成年美女黄色av网站| 久久国产精品久久伊人麻豆| 天天日天天日天天日天天日| 欧美aⅴ一区二区三区| 一级片一级片久久精品电影网电影 | 伊人久久婷婷av| 久久精品一区二区三区人妻蜜桃| 精品久久久久久999| 久久精品视频在线国国| 精品一区二区三区四区日产| 欧美熟女vides| 亚洲欧美日韩国产精品综合 | 亚洲女人老师毛茸茸| 又爽又黄的免费视频91| 日韩av在线精品观看| 日韩不卡一级成人免费视频| 午夜在线观看高清完整版| 国产精品99精品一区二区三区∴| 欧美一区二区理论片在线观看 | 日韩欧美激情入口| 精品国产一区二区三区无码蜜桃 | 韩国女团午夜大尺度福利| 91天仙tv国产福利精品| 成人午夜激情福利片| 久久久国产一区二区视| 亚洲av电影在线一区二区| 欧美日韩成人三级在线| 欧美日韩国产一级一顶级| 欧美一区二区三区成人免费看| 91人妻人人澡.人人精品| 亚洲综合精品久久| 黄色片一级美女黄色片| 精品日韩偷拍欧美另类| 亚洲欧洲偷拍自拍| 久久国产精品——国产精品| aaa久久久久久久久久网站| 久久久久久少妇被弄高潮| 国语黄色淫秽录像带| 精品欧美乱子伦一区二区三区| 另类欧美亚洲中文综合| 天天干天天草天天日天天天射伊人| 999热精品在线观看| 玖玖玖玖日在线视频| 四十路av熟女俱乐部| 日韩厕所偷拍美女| 日韩a视频在线播放视频| 日韩午夜精品啪啪啪| 欧美一区二区三区视频午夜| 国产精品久久久久国产| 国产三级三级三级三级av精品| 亚洲天堂av电影免费在线| aaaaa亚洲电影| 精品久久一区电影亚洲| 视频在线观看黄页| 搡老熟女一区二区三区老熟女| 999热这里只有精品在线| 日本女优和黑人的| 久久人妻少妇嫩草av蜜桃动态图| 精品美女1区2区3区| 搡老熟女一区二区三区老熟女| 亚洲狠狠婷婷综合久久a| 国产亚洲天堂sss| 青娱乐国产视频盛| 久久国产精品久久伊人麻豆 | 国产成人无码AA精品一区 | 亚洲欧美av在线观看| 亚洲丰满熟妇乱xxxxx| 美女差点操死在线观看| 久久视频这里都是精品| 人妻有码中文字幕中文| 思思久久国产精品视频| 日韩美女影院免费在线观看| 欧美一区二区三区激情无套| 日韩福利视频在线看| 日韩av在线精品观看| 久久综合中文字幕一区二区三区| 日韩亚洲图色在线| 日韩中文字幕视频在线播放| 欧美一区二区性久久久| 先锋资源站中文字幕| 天美麻豆成人av精品小说| 日韩福利视频在线看| 99日本亚洲精品视频| 中文字幕亚洲欧美国产| 日本av都有哪些系列| 九九久久国产精品久久久久| 亚洲人妻中文字幕av首页| 国产又粗又黄又大又长视频| 少妇人妻一区2区中文字幕 | 婷婷中文字幕色婷婷| 色播网站在线播放| 日韩美女影院免费在线观看| 亚洲五月婷婷激情图片| 亚洲 免费在线视频| 久久成人福利视频资源| 久久久久久少妇被弄高潮| 色综合久久久久久久久| 亚洲欧美日韩综合专区| 亚洲激情网在线播放| 天天色综合天天射综合| 欧美日韩综合国产精品| 精品久久久久久亚洲国产999| 日韩av网址在线播放| 国产自拍 偷拍 在线| 自拍偷拍亚洲欧美另类| 9久热这里有国产精品| 久久久久在线免费看| 日韩人妻插舔激情午夜| 久久精品香蕉绿巨人| 成人免费av在线网站| 999精品插丰满少妇人妻| 久久爱免费视频16| 中文字幕理伦福利片| 精品日韩偷拍欧美另类| 人妻av不卡一区二区三区| 欧美日韩国产一区二区三区免费| 免费麻豆国产一区二区三区| 国产aⅴ爽av久久久久成| 国产又大又长又粗又硬免费视频 | 偷偷夜夜精品一区二区三区蜜桃| 秋霞在线观看色哟哟视频| 日韩av黄片在线观看| 国语黄色淫秽录像带| 国产aⅴ爽av久久久久成| 国产成AV人片在线观看天堂无码| 黑人操日本女人电影| 亚洲精品一区二区三区丝袜| 色图av亚洲综合| 超碰在线免费成人午夜剧场97| 日韩中文字幕有码人妻在线| 久久久国产精品尤物av| 国产精品久久精品一区二区三区| 久久精品美国亚洲av伦理| 久久久久久久久久久免费网| 国内精品久久久久久久久久清纯 | 5858s在线视频| 久久久国产精品尤物av| 又爽又黄的免费视频91| 久久精品美国亚洲av伦理| 国产麻豆一级美女精品| 色综合精品一区二区三区| 日韩手机在线一区二区三区| 日韩精品少妇人妻熟女| 久久视频黄色观看网站| 国产欧美版日韩综合| 高潮久久久久久久av免费| 人妻丰满一区二区三区| 国产免费一级a男人的天堂| 久久久久久久精品综合| 午夜三级中文字幕视频网址大全| 欧美熟女高清视频一区二区| 99久久999久久久精品综合| 日韩黄色一级大片| 中文字幕精品久久久人妻| 成人黄视频在线播放| 亚洲丰满熟妇乱xxxxx| 精品视频在线观看一区二区97| 最新亚洲国产中文字幕av| 亚洲阿v天堂久久| 青青青青青欧美在线视频观看| 亚洲女人中文字幕在线| 久久精品久久一区二区三区| 欧美日韩国产综合aⅴ| 国产69tv精品久久| 天天操天天爽天天舔天天操一操| 麻豆丝袜美女人妻中文| 久久人妻久久人妻一区| 中文字幕亚洲资源天堂| 精品国产乱码久久久久久蜜坠欲下| av激情网站在线观看| 五月婷婷51视频免费| 亚洲一区二区三二区厕所偷拍| 综合激情五月天久久| 天天干天天插天天操天天日| 亚洲欧美av在线观看| 女人体内射精一区二区三区| 我要看一级国产黄色绿像| 骚妻少妇一区二区| 国产有码av一区二区| 秋霞电影韩国一区二区二区三区 | 国产91久久精品一区二区老 | 免费看久久久久久久性大片| 日韩尤物人妻av在线网| 亚洲欧美日韩国产精品综合| 久久国产精品——国产精品| 久久久久久久久久性| 欧美爱情动作片在线一区| 中文字幕亚洲欧美国产| 久久99免费成人在线| 亚洲国产欧美激情图区| 国产天堂avwww| 亚洲视频欧美视频另类| 久久精品熟女人妻一区二区三区| 亚洲国产欧美激情图区| 久热中文字幕在线精品| 97网视频免费在线观看| 国产一区二区视频大全床| 天天射天天舔天天射| 国产欧美一二三区视频| 精品欧美乱子伦一区二区三区 | 另类欧美亚洲中文综合| 日韩欧美久久免费观看| 午夜精品福利小视频| 日韩欧美亚州综合久久| 中文字幕+人妻熟女| 久久亚洲熟妇中文字幕| 日韩 美女 在线观看| 国产欧美日韩一区二区三区''| 亚洲 欧洲 日韩 人妻| 国产欧美版日韩综合| 日韩a v日日夜夜| 人妻日韩精品在线观看视频| 风间由美交换夫中文字幕| 日韩厕所偷拍美女| 日韩成人免费电影三区| 午夜影院av在线| 蜜久久久91精品人妻| 久久国产经典三级av| 国产精品色呦呦视频免费看| 人人妻人人澡人人看| 免费精品国产日韩热久久| 2020日韩中文字幕| 牛牛成人手机视频在线| 一区二区三区乱码视频| 亚洲情色av网站| 一级久久久久久久18| 国产精品久久欠久久al换脸综合| 成年人在线免费观看黄色片| 天天操,天天干,天天| 少妇人妻给我内射视频| 久久av资源男人站| www.成人国产精品| 另类蜜桃刺激视频在线观看| 91老司机免费福利| 中文字幕在线视频亚洲| 高清中文字幕乱码在线| 超碰97在线观看国产| 亚洲一区视频大全| 一本大道av伊人久久综合| 久久久久久久久久无吗| 久久久久中文字幕免费久久久久久| 99久久极品蜜桃臀精品久久| 国产三级三级三级三级av精品| 久久激情毛片大放送| 日韩av电影com| 香蕉在线蕉久在线| 欧美日本韩国乱搞视频| 日韩男女av在线观看| 美女免费一二三区视频| 婷婷亚洲天堂中文字幕| 亚洲熟妇av日韩熟妇在线| 国语一区二区在线观看| 欧美中文字幕在线一区| 欧美日韩精品欧美日韩| 日韩在线观看免费全集网站| 亚洲 欧美 日本 国产| 国内精品久久久久久久久久清纯| 999热精品在线观看| 91精品久久久久久久久不卡网站| 亚洲国产精品国自产拍av麻豆| 黄色片一级美女黄色片| 五月婷婷51视频免费| 国产精品久久久久一区二区| aaaaa亚洲电影| 国产剧情高清在线观看| 色丁香婷婷综合久久| 色婷婷久久久swag精品| 91超碰免费在线播放| 国产精品久久欠久久al换脸综合| 久久久久久精品国产成人| 免费av网站在线浏览| 色婷婷中文字幕基地| 亚洲欧洲av在线| 日韩在线中文字幕不卡| 色婷婷综合免费在线视频| 国产成人av吴梦梦视频| 国产三级三级三级三级av精品| 中文字幕在线有码二区| 999热这里只有精品在线| 熟女少妇一区二区精品| 久久久久久久黄色午夜精品| 91成人国产精品视频| 韩国女团午夜大尺度福利| 日韩精品免费91aa| 欧美日韩亚洲大片在线| 91精品国产综合久久久久久粉嫩| 篠田优中文字幕在线播| 亚洲欧美国产另类91综合| 牛牛成人手机视频在线| 男人的天堂久久久亚洲| 欧美一区二区三区aa大片| 精品人妻一区二区三区人妻视频| 久操免费福利在线视频观看视频 | 欧美aⅴ一区二区三区| 综合激情伊人久久| 精品久久中文字幕系列| 99久久999久久久精品综合| 在线观看日韩中文| 国产欧美一二三区视频| 高清不卡av在线网| 99久久久免费毛片基地| 日韩不卡一级成人免费视频| 亚洲欧美日产人妻| 国产成人无码AA精品一区 | 欧美亚洲av日韩综合一区| 最新美女激情av| 秋霞电影韩国一区二区二区三区| 亚洲制服高清中文字幕| 欧美熟妇精品在线观看 | 日韩草比网站在线免费观看 | 中文字幕一区二区三区中文字幕| 午夜精品福利小视频| 人妻日韩精品在线观看视频| 素人阁久久久久精品人妻| 午夜国产福利电影| 久久精品中文闷骚内射| 成人精品1024欧美日韩| 在线中文免费黄色| 欧美性久久久久久久久久久| 久久精品色婷婷国产网站| 91免费av在线观看| 亚洲精品久久第一页| 美女差点操死在线观看| 乱丰满的岳伦在线观看| 一本一道久久a久久久| 人人妻人人爱碰千| 欧美 国产 日韩 一区二区| 色yeye香蕉凹凸人妻三区| 中文字幕一线一区和二区| 91丝袜放荡丝袜脚交| 91影视一区二区三区| 欧美一级黄片视频看看| 亚洲欧美日韩一区二区三区不卡| 精品无人区一区二区三区竹菊| 日本久久久大片中文字幕| 中文字幕日韩天堂| 清纯唯美激情亚洲综合另类| 中文字幕人妻互换久久视频| 青青草青青操在线播放| 国产 日韩 欧美 日本| 久久人妻少妇嫩草av蜜桃动态图 | 久久99国产综合精品无码免费| 欧美激情欧美情色成人在线| 97人妻人人揉人人澡人人爽国产 | 日韩乱妇乱女熟妇熟女网红| 日韩不卡一级成人免费视频| 色哟哟视频在线一区| sepapa自拍偷拍| 亚洲香蕉av电影| 91一区二区精品在线| 91久久精品日日躁夜夜躁| 日韩av在线天堂| 黄色片一级美女黄色片| 高清视频在线观看一区二区三区| 国产精品久久久久久吹吹潮| 久久久精品国产亚洲av网深田| 久久久免费精品少妇| 亚洲精品网站成人久久综合| 天天日天天干天天爱天天| 欧美一区二区三区,| 久久视频这里都是精品| 国产亚洲天堂sss| 成人av电影免费版| 久久99久久com| 久久九特黄的免费大片| 激情亚洲一区蜜桃在线| huangse网站在线观看| 久久亚洲精品日韩高清| 欧美一区二区三区综合色| 久久久九九九九九精品6| 欧美aⅴ一区二区三区| 午夜国产福利电影| 国产又粗又硬又长又爽视频| 欧洲av偷拍亚洲av偷拍| 国产精品久久久久一区二区| 另类欧美亚洲中文综合| 亚洲欧美日韩一区17c| 亚洲av综合久久伊人| 视频免费在线观看91| 亚洲五月婷婷视频| 搡老熟女一区二区三区老熟女| 一区二区三区精品乱子伦……| 99久久国语露脸精彩对白| 国产乱人妻精品久久久| 91偷伦一区二区三区蜜臀| 安斋拉拉中文字幕在线| 天美麻豆成人av精品小说| 日韩有码在线免费观看视频| 97精品国产自在在线观看蜜臀| 在线观看色有小视频| 国产成人精品视频免费网站| 97成人免费碰碰碰视频| 国产69tv精品久久| 91偷拍老熟女露脸合集| 久久久久久久久人妻精品| 欧洲美女黑人粗性暴交视| 99re6热在线视频免费观看| 激情黄色开心五月天| 最新美女激情av| 亚洲欧美日韩一区17c| 国产免费一级a男人的天堂| 国产日本精品久久久久| av国偷自产自拍自在线| 日韩日韩av在线| 日韩欧美国产成人一区| 日韩亚洲图色在线| 国产精品久久久久成人片| 欧美日韩久久久久久精品| 久久久久久久久久久久久丰满| 瑟瑟网站免费观看| 中文字幕熟女人妻在线网页| 亚洲国产精品国自产拍av麻豆| 亚洲欧洲国产一区二区| 日本东京热天天日天天干| 日韩免费美女电影| 亚洲成a人片7777| 久热中文字幕在线精品| 久久成人福利视频资源| 99日本亚洲精品视频| 久久精品人人看人人爽| 久久国产精品色av免费看| 国产精品久久久久久久久粉嫩av| 欧美精品一区二区在线视频| 精品99国内中文字幕| 国产成人av最新网址| 美日韩美女三级电影| 日本精品久久久久中人妻| 亚洲成年人电影天堂| 国产 日韩 欧美 日本| 日本二次元少女裸| 秋霞在线观看色哟哟视频| 国产丝袜香蕉在线观看| 日韩尤物人妻av在线网| 国产精品成人av麻豆| 免费中文字幕在线播放| 99re热在线精品视频9| 青青青手机版视频在线看| 亚洲国产精品综合久久2007| 日本黄色成年视频| 日韩在线免费视频精品| 婷婷丁香花五月天| 少妇惨叫久久久久久久| 国产三级三级三级三级av精品| 黑人粗大精品一区二区| 天天色天天日天天操| 丝袜日韩中文字幕| 激情黄色开心五月天| 国产精品99久久电影| 七十路熟女俱乐部| 精品一区二区三区四区人妻69| 蜜臀久久99精品久久久久久久久 | 亚洲久久精品午夜| 日韩精品刺激视频| 篠田优中文字幕在线播| 国产69tv精品久久| 欧美日韩精品综合在线一区二区| 嫩草一区二区三区四区中文 | a级黄片在线免费观看| 人妻一区二区三区巨免费| 97久久视频免费在线播放| 50岁老熟女一区二区三区| 日韩欧美三级一区二区在线观看| 香蕉在线蕉久在线| 久久婷婷亚洲中文一区二区 | 亚洲少妇黄色一级片| 中文字幕av久久爽爽| 青娱乐国产视频盛| 国产精品亚洲精品成人| 久久精品香蕉绿巨人| 亚洲男人五月天堂| 日本av男优巧克力| 久久久久久久久久性| 青青草国产福利视频| 国产99精品久久久久久圆免看片| 99国产在线 精品 视频| 国产精品一区二区三区福利| 国产 另类 在线 欧美日韩| 精品久久久久久999| 久久国产精品——国产精品| 亚洲成人久久久久| 色图av亚洲综合| 亚洲激情有码一区二区| 在线观看视频 你懂得| 欧美日韩国产色图视频| 成年美女黄色av网站| 日韩免费美女电影| 亚洲一区视频大全| 欧美中文字幕久久久| 伊人久久婷婷色综合98网| 国产日韩一区二区三区啪啪啪| 久久精品中文闷骚内射| 国产精品成人av在线网站| 一级久久久久久久18| 中文字幕一区二区三区六区9区| 色综合久久999| 久操免费福利在线视频观看视频| 成人在线观看黄色片| 中文字幕av久久爽爽| 久草青青草原在线视频| 国产美女深喉口爆吞精免费| 成人av电影免费版| 1024欧美一区二区看片| wwxxx中文字幕| 最新美女激情av| 国产亚洲av免费一区二区| 亚洲av电影在线一区二区| 成人av激情网一区二区三区| 色图av亚洲综合| 欧美一区二区精品人妻免费视频 | 日韩av网址在线播放| 美女在线观看亚洲一区| 久久传奇网站一区三区视频| 精品国产丝袜久久久一区二区| 国产精品一区二区亚瑟不卡| 国产欧美精品久久无广告| 国产又大又猛又黄的视频| 日本中文国产字幕| 日韩免费美女电影| 婷婷丁香花五月天| av国偷自产自拍自在线| 一区二区 熟女人妻| 久久久久国产精品免费| 99爱99久久久久久久久久| 日韩草比网站在线免费观看| 日韩av电影免费在线播放| 中文字幕在线有码二区| 91久久亚洲成人精品| 人妻av不卡一区二区三区| 亚洲香蕉av电影| 精品日韩偷拍欧美另类| 视频在线观看黄页| 久久久久久久久久久最新| 国产探花在线播放精品| 日韩色在线视频观看免费| 久久蜜桃视频亚洲精品| 综合久久综合久久综合久久| 秋霞电影韩国一区二区二区三区 | 日韩中文字幕理伦| 日本美女大学生一区二区三区| 国产又大又长又粗又硬免费视频 | 日韩av在线观看免费看看| 欧美日韩精品成人在线| 91插插插操美女视频| 国产又大又长又粗又硬免费视频| 5858s在线视频| 国产丝袜香蕉在线观看| 国产99不卡免费在线观看| 亚洲一线产区二线产区区| 国产91熟女免费视频| 久久精品国产av网| 色婷婷国产熟妇人妻露脸| 97人妻人人揉人人澡人人爽国产| 国产亚洲精久久久久久无码色戒| 免费观看a级在线视频| 美女在线观看亚洲一区| 亚洲人妻中文字幕av首页| 日韩av在线观看卡一卡| 午夜三级中文字幕视频网址大全| 先锋男人资源中文字幕| 久久人搡人人玩人妻精品| av熟妇翔田千里俱乐部| 国产日韩一区二区三区啪啪啪| av在线免费在线观看av| 99精品视频在线看17| 亚洲情色av网站| 日韩av在线天堂| 亚洲 欧美 制服 人妻| 最新精品成人在线| 蜜桃精品一区二区三区在| 91国产视频网站在线观看| 污视频在线观看91| 婷婷中文字幕色婷婷| 日韩中文字幕有码人妻在线| 91在线精品一区二区网站| 久久传奇网站一区三区视频| 92视频影院视频影院麻豆| 亚洲自拍偷拍色图区| 少妇人妻给我内射视频| 久久99国产综合精品无码免费| 日本加勒比中文字幕久久| 老熟女17页一91| 国产精品欧美日韩五月香蕉| 91精品国产综合久久久久久粉嫩| 欧美日韩国产色图视频| 久热中文字幕在线精品| 亚洲熟妇av熟妇在线| 日本高清理论片中文字幕| 欧洲美女黑人粗性暴交视| 人妻啪啪视频免费看| 精品久久一区电影亚洲| 色哟哟视频在线观看国产| 美女在线观看亚洲一区| 久久成人福利视频资源| www.色av成人| 久久久久999蜜桃视频| 久久久免费精品少妇| 亚洲男人天堂久久| japanese 在线中文字幕| 精品乱码一区二区三区四区| 成人精品1024欧美日韩| 亚洲欧美日产人妻| 亚洲欧美在线制服丝袜| 中文字幕熟女人妻在线观看| 欧美日韩久久久久久精品| 91久久国产综合久久91在线| 精品日韩色国产在线观看| 91天仙tv国产福利精品| japanese 在线中文字幕| 久久伊人亚洲综合网| 蜜臀久久久久精品一区二区三区| 日韩欧美综合一区二区在线| 久久久精品欧美一区二区国产| huangse网站在线观看| 日韩亚洲丝袜系列| 2020日本中文字幕| 国产91久久久久久久| 国产精品久久久久久久久久69| 久久久久精美免费观看视频| 久久久久999久久日| 日本高清理论片中文字幕| 综合激情伊人久久| 午夜三级中文字幕视频网址大全| 色婷婷中文字幕基地| 熟女人妻之中文字幕| 亚洲成a人片,77777| 日韩美女主播人体视频自拍首页 | 丝袜日韩中文字幕| 欧美熟女高清视频一区二区| 日韩在线中文字幕不卡| 国产91极品身材白皙| 亚洲国产精品国自产拍av麻豆| 208精品福利导航| 成年人晚上免费看的视频| 中文字幕版婷婷久久| 国产日韩欧美人妻在线观看| 免费av网站在线浏览| 国产成人无码AA精品一区 | 国产精品色呦呦视频免费看| 欧美又色又爽又黄又粗暴| 久久在线人妻熟女高清完整版| 国产日韩亚洲大尺度高清| 精品97人妻无码中文永久| 国产日韩欧美成人一二三区| 大香蕉久草网一区二区三区| 精品欧美乱子伦一区二区三区 | 日韩欧美 国产精品| 91免费av在线观看| 精品99国内中文字幕| 少妇激情视频一区二区| 97人妻中文字幕精品视频| 少妇人妻给我内射视频| 久久精品一区二区三区人妻蜜桃 | 青青草成人影院在线观看| 日韩av在线不卡网站| 国产成人av吴梦梦视频| 亚洲av色图com| 国产又大又长又粗又硬免费视频| 日韩av在线不卡网站| 亚洲伊人网在线观看| 国产又粗又硬又长又爽视频| 一区二区三区四区中文字幕| 日韩一级黄色大片免费观看 | 安斋拉拉中文字幕在线| 国产精品色呦呦视频免费看 | 久久99永久免费看| 青青青青青欧美在线视频观看| 欧美日韩综合国产精品| 亚洲综合精品久久| 亚洲欧美自拍偷拍在线观看| 97久久碰人妻一区二区三区四| 日韩精品综合免费视频| 欧美精品人妻丝袜一区| 综合激情伊人久久| 黄色片一级美女黄色片| 亚洲最黄色的视频| 中文字幕一区二区不卡顿| 精品无人区一区二区三区竹菊| 国产精品福利久久久久久久| 国产丝袜香蕉在线观看| 亚洲av精品久久久蜜| 337p亚洲精品色噜噜| 国产乱人妻精品久久久| 一级片一级片久久精品电影网电影 | 91精品久久久久久五月天| 亚洲图色91东京热| 99久久久免费毛片基地| 亚洲成人影院中文字幕| 成人精品1024欧美日韩| 美女差点操死在线观看| 欧美日韩成人精品视频| 日韩一区二区三区乱码| 亚洲av电影在线一区二区| 91国产手机视频在线观看| aaa久久久久久久久久网站 | 又粗又猛又爽黄老大爷视频| 免费中文字幕在线播放| 久久视频免费有精品| 欧美3d成人动漫在线| 天堂av最新资源在线| 韩国女团午夜大尺度福利| 国产精品一区二区三区三级| 91精品人妻一区二区三区四区| 欧美精品一区二区三区蜜臀| 蜜桃精品一区二区三区在| 亚洲av网站女性向在线观看| 人妻精品少妇嫩草麻豆| 亚洲人的午夜影院| 国产69tv精品久久| 男人的天堂久久精平| 玖玖资源站中文字幕一区二区| 亚洲欧美自拍偷拍在线观看| 91精品一二三区在线观看| av一级二级三级久久久| 91在线精品国自产拍| 乱丰满的岳伦在线观看| 久久亚洲精品无码系列客服| 视频免费在线观看91| 欧美3d成人动漫在线| 自拍偷拍 亚洲 在线| av熟妇翔田千里俱乐部| 日韩人妻插舔激情午夜| 狠狠干中文字幕97视频| 九九re精品免费视频| 亚洲综合在线伊人| 又粗又猛又爽黄老大爷视频| 亚洲 欧美 制服 人妻| 亚洲成人日韩丶av| 日韩av黄片在线观看| 亚洲久久久久久久人妻| 蜜桃精品一区二区三区在| 亚洲成人久久久久| 亚洲欧洲国产一区二区| 最新亚洲国产中文字幕av| 日韩乱妇乱女熟妇熟女网红| 久久精品一区二区三区人妻蜜桃| 免费看久久久久久久性大片| 欧美亚洲av日韩综合一区| 亚洲 免费 在线 观看| 影音在线精品免费国产资源| av日韩中文字幕人妻| 久久人妻少妇嫩草av蜜桃动态图| 97国产免费电影网| 精品国产丝袜久久久一区二区| 人妻精品无码一区二区三区| 牛牛成人手机视频在线| 欧洲美女黑人粗性暴交视| 欧美一区二区三日韩| 日本熟妇乱子伦a片在线观看 | 精品久久中文字幕系列| 国产黄色主播网址大全在线播放| 免费色婷婷在线视频| 黑人操日本女人电影| 欧美日韩精品在线观看免费| 欧美一区二区三区aa大片| 欧美日韩少妇一二三| 国产一区无码在线桃花| 精品无码久久久久久毛片| 亚洲精品熟女中文字幕| 亚洲情色av网站| 婷婷在线综合观看视频| 精品国产乱码久久久久夜深| 一区,二区,三区视频| 久久精品香蕉绿巨人| 日韩欧美xxxx大片| 婷婷亚洲天堂中文字幕| 精品国产一区二区三区无码蜜桃 | 伊人久久中文字幕综合观看| 日本中文字幕久久免费精品| 久久亚洲精品无码系列客服 | 午夜精品久久久久久久久二区三区| 蜜臀av 麻豆av| 久久蜜臀精品一区二区| 人妻啪啪视频免费看| 狠狠久久综合丁香777米奇| 日韩欧美一级在线视频| 777亚洲精品乱码久久| 日日夜夜夜视频伊人久久| 人妻中出视频一区二区| 国产精品首页在线播放| 五月黄色激情视频| 日韩欧美 国产精品| 精品aa级中文字幕人妻| 91久久国产综合久久91在线| 婷婷免费精品视频在线| 日韩 美女 在线观看| 99热2这里只有精品| 亚洲精品蜜桃久久久久| 国产欧美一区二区二区精品| 视频在线观看黄页| 91国偷自产一区二区三区偷拍| 国产人妻另类综合专区| 99热精品国产影视久久久影院| 国产精品亚洲精品成人| 日本黄页在线播放日本网站| 亚洲国产一成人久久精品| 日韩av网址在线播放| 亚洲国产aⅴ精品一区二区欧美 | 久久99永久免费看| 肥臀熟女一区二区三区肥女人| 久久人人爽爽人人爽av| 亚洲精品网站成人久久综合| 中文字幕在线有码二区| 老熟女17页一91| 麻豆亚州av熟女国产一区二| 91一区二区精品在线| 亚洲综合在线伊人| 日韩精品综合免费视频| 天天射天天舔天天射| 又粗又猛又爽黄老大爷视频| 免费av网站在线浏览| 91在线国产九色porny| 91高级会所在线播放| 精品乱码一区二区三四五六区| 婷婷免费精品视频在线| 免费人妻一区二区三区免费视频| 久久久久久久夜精品精品| 高潮久久久久久久av免费| 国产日韩欧美成人一二三区| 97久久碰人妻一区二区三区四 | 蜜桃精品一区二区三区在| 中文字幕av最新在线| 久久精品美国亚洲av伦理| 久久一本麻豆天美欧美日韩| 91偷伦一区二区三区蜜臀| 久久传奇网站一区三区视频| 五月婷婷久久久久久久久| 日韩男女av在线观看| 久久一本麻豆天美欧美日韩| 久久成人网男人的天堂| www.成人国产精品| 欧美一区二区精品人妻免费视频 | 亚洲欧美丝袜精品久久直播| 日韩国产91综合精品| 国产一区二区视频大全床| 亚洲欧洲黄色图区| 久久最近最新中文字幕大全| 中文字幕理伦福利片| 韩国女团午夜大尺度福利| 久久精品国产av网| 青青草青青操在线播放| 亚洲欧洲久久精品| 国产一区二中文字幕在线免费观看 | 99久久窝窝午夜影视| 久久激情毛片大放送| 国产99精品久久久久久圆免看片| 91免费av在线观看| 国产激情综合视频在线观看| 91人妻人人做人碰人人| 久久精品人妻中文字幕一区| 国产一区二区视频大全床| 婷婷激情五月天图片| 国产欧美日韩不卡在线观看| 国产精品首页在线播放| 精品999久久久一免费ww| 在线观看色有小视频| 日韩亚洲图色在线| 精品人妻久久久久中文字幕19禁 | 日韩av在线不卡网站| 伊人久久婷婷av| 天天操天天干天天做天天射| 欧美三级中文字幕久久精品| 热热久久这里只有精品| 一级片一级片久久精品电影网电影| 99久久久免费毛片基地| 色播五月激情四射| 午夜在线看1000集| 久久亚洲熟妇中文字幕| 久久草免费在线视频| 99re热在线精品视频9| 蜜臀久久99精品久久久久久久久| 午夜探花在线免费观看| 久久久久久添逼视频| 国产91极品身材白皙| 亚洲欧美日韩一区17c| 99re在线精品国产欧美久久| 国产一区二区不卡91| 十八禁久久久久久久久久久久久久 | 久久精品久久一区二区三区| 久久精品国产av网| 亚洲天堂性色综合| 久久国产精品久久伊人麻豆| 天天干天天草天天日天天天射伊人| 人妻办公室被强d在线电影| 午夜寻花美女在线| 人妻熟女视频免费观看| 天天干天天插天天操天天日| 另类欧美亚洲中文综合| 日本高清不卡视频在线播放| 国产精品久久久久久久漫画| 精品人妻一区二区三区人妻视频 | www.199麻豆在线视频| 亚洲国产精品综合久久2007| 亚洲国产精选久久| 18在线观看久久久麻豆| 亚洲av亚洲av亚洲| 亚洲综合成人久久av| 五月婷久久综合狠狠爱97| 日韩精品在线视频播放| 搡老熟女一区二区三区四区视频| 午夜精品福利小视频| 人人妻人人澡人人爽dv| 久久视频一区二区三| 国产日韩一区二区三区啪啪啪| 亚洲av综合色区手机| 久久这里只有精品久| 午夜寻花美女在线| 精品人妻一区二区三区线国色天香| 色婷婷国产熟妇人妻露脸| 日韩亚洲图色在线| 嫩草一区二区三区四区中文| 久久精品国产久精果冻传媒 | 欧美老熟妇重口另类xxx| 蜜久久久91精品人妻| 中文字幕人妻互换久久视频| 高清中文字幕乱码在线| 亚洲aⅴ欧美综合一区二区三区| 青青草久久大香蕉| 天天操天天干天天妻| 91人妻人人做人碰人人| 久久免费视频观看99| 亚洲日本精彩视频在线观看| 国产91久久精品一区二区老| 免费精品国产日韩热久久| 日韩在线免费视频精品| 亚洲成人久久久久| 日韩在线免费视频精品| 欧美肥臀精品一区二区三区 | 日韩色在线视频观看免费| 精品乱码久久久久久蜜臀| 亚洲情色av网站| 日韩欧美一级在线视频| 色亚洲天堂色派对欧美色| 国产91久久久久久久| 中文字幕在线视频亚洲| 91在线精品国自产拍| 国产av在线观看麻豆| 日韩少妇视频在线直播| 午夜寻花美女在线| 日韩中文字幕在线网站| 亚洲久久亚女同性| 精品国产丝袜久久久一区二区 | 中文字幕一区二区三区中文字幕 | 亚洲精品,欧美日韩| 亚洲日本韩国欧美一起| 97国产免费电影网| 91国偷自产一区二区三区偷拍| 午夜日韩麻豆福利| 久久亚洲精品无码系列客服| 亚洲激情 欧美激情| 欧美爱情动作片在线一区| 久久久久久最新精品| 亚洲久久久久久久人妻| 久久久久久久黄色午夜精品| 色yeye香蕉凹凸人妻三区| 777亚洲精品乱码久久| 熟女少妇视频一区二区在线| 日韩手机无线看视频| 91人妻九色大屁股| 久久国产精品人妻酒店| 午夜日韩麻豆福利| 国产又大又长又粗又硬免费视频| av国产一区二区三区| 欧美日韩亚洲国产ay| 国产一区二区视频大全床| 亚洲国产欧美日本视频| 精品国产丝袜久久久一区二区| 中文国产成人精品久久一| 日韩a大片在线观看| 五月婷婷激情狠狠| 久久亚洲精品日韩高清| 亚洲av综合久久伊人| 日本aaaa视频在线观看| 日本久久久大片中文字幕| 先锋男人资源中文字幕| 大香蕉大香蕉大香蕉大香蕉大| 久久精品人人看人人爽| 四十路av熟女俱乐部| 免费观看a级在线视频| 亚洲成人久久久久| wwxxx中文字幕| 亚洲 欧美 日本 国产| 色婷婷一区二区三区四区五| 日韩av一区二区三区久久久| 一本一道久久a久久久| 久久久久999久久日| 中文字幕成人资源网站| 久久五月婷婷综合视频| 日本av熟女人妻| 亚洲欧美日韩一区17c| 97人妻人人揉人人澡人人爽国产| 蜜桃黄色av网站免费播放| 亚洲男人五月天堂| 国产五月天在线观看视频| 91精品久久久久久五月天| 91人妻人人做人碰人人| 午夜精品久久婷婷蜜桃| 国产乱人妻精品久久久| av国产一区二区三区| 亚洲青青青国产观看视频| 国产成人精品视频免费网站| 日韩在线免费视频精品| 天美麻豆成人av精品小说| 久久传奇网站一区三区视频| 午夜寻花美女在线| 日韩中文字幕理伦| 日韩中文字幕一区二区三区四区| 日韩欧美亚州综合久久| 亚洲欧美日韩在线中文字幕小| 日韩精品少妇人妻熟女| www.亚洲成人色| 亚洲国产精品综合久久2007| av日韩中文字幕人妻| 日韩美女影院免费在线观看| 蜜桃久久久一区二区三区| 亚洲女人中文字幕在线| 99久久国语露脸精彩对白| 精品国产乱码久久久久夜深| 五月婷婷激情狠狠| 91人妻人人澡.人人精品| 亚洲欧美日韩在线中文字幕小| 高潮久久久久久久av免费| 999热精品在线观看| 91人妻露出精品在线| 日韩av在线观看卡一卡| 欧美一区二区三区,| 欧美日韩亚洲大片在线| 2001年亚洲区十强赛| 亚洲天堂性色综合| 高清中文字幕乱码在线| 2020日本中文字幕| 日韩a v日日夜夜| 亚洲欧美日产人妻| 综合久久综合久久综合久久| 蜜桃视频在线观看一区精品| 日韩国产精品电影网| 日韩精品综合免费视频| 加勒比精品一区二区三区| 五月婷婷激情狠狠| 狠狠干中文字幕97视频| 日本黄页在线播放日本网站| 天天干天天草天天日天天天射伊人| 亚洲欧洲色图动图| 欧美不卡高清一区二区三区| 青青草成人影院在线观看| 成年人晚上免费看的视频| av在线免费播放成人| 五月婷婷51视频免费| 欧美一区二区三区激情啪啪啪| 国产一级av国产免费| 91九色porny国产视频| 日韩欧美国产成人一区| 在线观看色有小视频| 国产精品欧美日韩五月香蕉| 国产天堂avwww| 日韩欧美亚州综合久久| 青青草国产福利视频| 97国产人妻换人妻| 精品久久久久久亚洲国产999| 久久热最新视频在线观看| 久久久久久精品日韩| 精品一区二区三区蜜桃臀的优势| 久久爱免费视频16| 嫩草一区二区三区四区中文| 成人午夜激情福利片| 亚洲精品图片第十八页| 久久久精品欧美一区二区国产| www.视频一区二区三区| 日本中文国产字幕| 国产91熟女免费视频| 久久精品久久一区二区三区| 欧美视频 亚洲视频| 国产成人无码AA精品一区| 青青青在线视频自拍| 俺去鲁婷婷六月色综合| 天天日天天干天天爱天天| 亚洲天堂网av中文字幕| 亚洲成人久久久久| 人人狠狠久久综合网| 人妻少妇精品久久人妻| 日韩在线中文字幕不卡| www.色av成人| 日韩av在线天堂| 日韩在线播放视频1区| 国产欧美日韩精品专区黑人| 欧美日韩亚洲国产ay| 五月激情爱爱婷婷| 视频免费在线观看91| 先锋男人资源中文字幕| 欧美中文字幕在线观看视频| 亚洲综合精品久久| 成人精品一区一区二区看片| 久久国产精品——国产精品| 五月天丁香婷婷国产| 国产麻豆剧传媒精品视频| 亚洲狠狠久久综合一区| 亚洲综合精品久久| 日韩欧美颜色渔网|