精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

真香定律!我用這種模式重構了第三方登錄

開發
在我們日常的開發中,適配器模式是比較常用的一種設計模式,不僅僅使用下述場景,其實在很多其他api的對接的場景也有適用。

老貓的設計模式專欄已經偷偷發車了。不甘愿做crud boy?看了好幾遍的設計模式還記不住?那就不要刻意記了,跟上老貓的步伐,在一個個有趣的職場故事中領悟設計模式的精髓吧。還等什么?趕緊上車吧。

一、故事

辦公室里,小貓托著腮幫對著電腦陷入了思考。就在剛剛,他接到了領導指派的一個任務,業務調整,登錄方式要進行拓展。例如需要接入第三方的微信登錄,企業微信授權登錄等等。

原因大概是這樣,現在大環境不好,原來面向B端企業員工的電商業務并不好做,新客拓展比較困難,業務想要有更好的起色著實比較困難,所以決策層決定要把登錄的口子放開,原來支持手機密碼登錄以及手機驗證碼進行登錄,現在為了更好地推廣,需要支持微信掃碼關注企業公眾號后登錄,企業微信,微博等等一些列的第三方登錄模式。

說白了未來到底會有多少種登錄方式不得而知,那么面對這樣一個棘手的問題,小貓又該何去何從?

二、概述

登錄問題相信后端小伙伴都有接觸過,最簡單的可能就是做一個權限系統就會用到登錄名+密碼+驗證碼進行登錄,繼而稍微復雜一些可能會涉及手機驗證碼登錄。現在隨著第三方平臺的層出不窮,我們很多網站其實都提供了聯合登錄。用戶掏出手機簡單地一個掃碼動作即可完成初步的注冊登錄功能。這種方式一定程度上能夠給當前的網站帶來更多的流量。

關于小貓遇到的問題,咱們嘗試從下面幾個點去解決。

概要

三、登錄演化

聊到登錄,我們首先去了解一下整個登錄認證的發展階段,以及目前比較常見也相對比較復雜的微信公眾號授權登錄流程。

1.基于Cookie/Session進行驗證登錄

在早期,也就是可能是單體系統的時代,亦或者站在java開發者角度來說是jsp時代的時候,我們用的登錄方式就是Cookie/Session驗證的方式。關于Cookie以及Session相信很多后端的小伙伴都應該知道,當然若真有不清楚的,大家可以自己查閱一下相關資料。利用這種方式登錄的流程其實還是比較簡單的,如下流程:

session登入

基于上述登錄成功后,服務端將用戶的身份信息存儲在Session里,并將session ID通過cookie傳遞給客戶端。后續的數據請求都會帶上cookie,服 務端根據cookie中攜帶的session id來得到辨別用戶身份。

簡單的java偽代碼如下:

...
session.setAtrrbuite("user",user);
...
session.getAttrbuite("user");

當然上述的偽代碼還是基于最最原始的寫法去寫的,關于這種登錄的框架,其實目前市面上也有比較成熟的,例如輕量級的shiro,spring本身自帶的權限認證框架也有。

隨著業務的發展,系統訪問量級的增大,我們漸漸發現這種方式存在著一些問題:

  • 由于服務端需要對接大量的客戶端,也就需要存放大量的Seesion ID,這樣就會導致服務器壓力過大。如果服務器是個集群,為了同步登錄的狀態,需要將Session ID同步到每一臺服務器上,無形中增加了服務器端的維護成本。
  • 由于Session ID存放在Cookie中,所以無法避免CSRF攻擊(跨站請求偽造)。

當然其他問題也歡迎小伙伴們進行補充。為了解決這一系列的問題,我們漸漸演化出了另外一種登錄認證方式————基于token進行認證登錄。

2.基于TOKEN進行認證登錄

現在的系統大部分都是前后端分離開發的。后端大多使用了WEB API,此時token無疑是處理認證的最好方式。

Session 方案中用戶信息(以Session記錄形式)存儲在服務端。而Token方案中(以Token形式)存儲在客戶端,服務端僅驗證Token合法性即可。基于Token的身份驗證是無狀態的,不將用戶信息存在服務器中。這種概念解決了在服務端存儲信息時的許多問題。NoSession意味著咱們的程序可以根據需要去增減機器,而不用去擔心用戶是否登錄。

咱們一起來看一下如果使用TOKEN整個流程。

token機制

關于上述token機制的特點有以下幾點:

  • 無狀態、可擴展:在客戶端存儲的Token是無狀態的,并且能夠被擴展。基于這種無狀態的和不存儲Session信息,所以不會對服務器端造成壓力,負載均衡器能夠將用戶信息從一個服務器傳到其他服務器上,即使是服務器集群,也不需要增加維護成本。
  • 可擴展性:Tokens能夠創建與其它程序共享權限的程序。(即,我們所說的第三方平臺聯合登錄的時候,token的生成機制以及驗證可以由第三方系統進行聯合驗證登錄)
  • 安全性:請求中發送Token而不是發送Cookie,能夠防止CSRF(跨站請求偽造)。即客戶端使用Cookie存儲了Tooken,Cookie也僅僅是一個存儲機制而不是用于認證。不將信息存儲在Session中,讓我們少了對Session的操作。Token也可以存放在前端任何地方,可以不用保存在Cookie中,提升了頁面的安全性。Token是會失效的,一段時間之后用戶需要重新驗證。
  • 多平臺跨域:對應用程序和服務進行擴展的時候,需要介入各種各種的設備和應用程序。只要用戶有一個通過了驗證的token,數據和資源就能夠在任何域上被請求到。

3.微信掃碼跳轉公眾號認證登錄

這也是后續小貓遇到的問題,以及需要和其他第三方Api主要對接的。其實關于掃碼認證登錄也是基于token機制的一種拓展。只不過第三方的平臺在token機制上新增了獲取二維碼進行二次確認的過程。咱們以微信掃碼跳轉公眾號登錄為例來看一下整個流程。其他的第三方登錄流程其實也是大同小異,咱們了解一個流程即可,不同的平臺只是對接不同的api而已。

流程圖如下:

ticket機制

從上面這幅圖看到,掃碼登錄其實復雜就復雜在獲取token這個步驟上,當獲取完畢token之后,其后續的業務邏輯其實基本也是一樣的。

其實其他第三方的登錄其實也是大同小異,最主要的難點是在如何獲取token上,我們只要認真看完對接的api,其實問題也基本都能迎刃而解。

說明一下,老貓這里繪圖用了drawio工具,如果想要知道老貓的繪圖思路,大家可以看看這里《繪圖思路

四、如何兼容多套?

看完上述之后,相信大家會對認證登錄心里有桿秤了。細節方面其實只要去查詢相關平臺的api,然后去擼代碼就好了。但是實現一套倒是還好,但是現在小貓遇到的問題是需要在原邏輯上去豐富登錄的代碼。如果在老的代碼上通過if else的方式去實現多套登錄邏輯,那估計后面又是屎山。

這里,其實我們可以引入“適配器設計模式”去解決這樣的問題。

1.什么是適配器模式?

適配器模式(英文名:Adapter Pattern)是指將一個類的接口轉換成用戶期望的另一個接口,使得原本接口不兼容的類可以一起工作。

適配器模式可以分為兩類:對象適配器模式和類適配器模式。對象適配器模式通過組合實現適配,而類適配器模式則通過繼承實現適配。

此外,還有一種特殊的適配器模式——缺省適配器模式它由一個抽象類實現,并在其中實現目標接口中所規定的所有方法,但這些方法的實現通常是空方法,由具體的子類來實現具體的功能。適配器模式的應用可以提高代碼的復用性和可維護性,同時幫助解決不同接口之間的兼容性問題。

上面的概念比較抽象,其實在咱們的日常生活中也有這樣的例子,例如手機充電轉換頭,顯示器轉接頭等等。

2.適配器模式重構第三方登錄

話不多說,直接開干,我們就針對小貓的遇到這個第三方登錄的場景,咱們用代碼重構一把。(當然,這里我們側重的還是偽代碼)。跟著老貓,咱們一步步走好代碼的演化。

咱們先看一下老的業務代碼,如下:

public class UserLoginService {
    public ApiResponse<String> regist(String userName,String password) {
        //...dosomething
        return ApiResponse.success("success");
    }
    public ApiResponse login(String userName, String password) {
        return null;
    }
}

接下來由于小貓的業務會發生變更,新的登錄方式會層出不窮,所以,我們得遵循之前提到的軟件設計原則去更好地寫一下業務代碼。我們遵循之前提到的開閉原則,于是我們邁出了重構代碼的第一步,我們將創建一個新的第三方登錄的類來專門處理第三方的登錄對接。如下:

public class ThirdPartyUserLoginService extends UserLoginService {

    public ApiResponse loginForQQ(String openId) {
        /**
         * openid 全局唯一,咱們直接作為用戶名
         * 默認密碼QQ_EMPTY
         * 注冊(原來父類中有注冊實現)
         * 調用原來的登錄
         */
        return loginForRegist(openId, null);
    }

    public ApiResponse loginForWechat(String openId) {
        return null;
    }

    public ApiResponse loginForToken(String token) {
        return null;
    }

    public ApiResponse loginForTel(String tel, String code) {
        return null;
    }

    public ApiResponse<String> loginForRegist(String userName, String password) {
        super.login(userName, password);
        return super.login(userName, password);
    }
}

寫到這里,其實咱們已經集成了多種登錄方式的代碼兼容,但是這種實現方式顯然是不太優雅的,看起來比較死板,在登錄的時候我們甚至還得去判斷客戶到底是用什么去做登錄的,然后去分別調用不同第三方平臺的認證方式。

我們接下來演化開始用適配器。如下代碼:首先我們定義出一個標準的適配接口:

public interface LoginAdapter {
    boolean support(Object adapter);
    ApiResponse login(String id,Object adapter);
}

根據上面我們看到,我們有QQ方式登錄,有微信方式登錄,有電話驗證碼方式登錄。所以我們對應的就應該有相關的這些方式的適配器的實現。由于代碼重復,所以在此老貓就寫QQ和微信這兩種偽代碼,其他的暫時先偷個懶。

/**
 * @author 公眾號:程序員老貓
 * @date 2024/3/3 22:47
 */
public class LoginForQQAdapter implements LoginAdapter {
    @Override
    public boolean support(Object adapter) {
        return adapter instanceof LoginForQQAdapter;
    }

    @Override
    public ApiResponse login(String id, Object adapter) {
        return null;
    }
}

public class LoginForWeChatAdapter implements LoginAdapter {
    @Override
    public boolean support(Object adapter) {
        return adapter instanceof LoginForWeChatAdapter;
    }

    @Override
    public ApiResponse login(String id, Object adapter) {
        return null;
    }
}

有了這些適配器之后,我們就統一對外給出去接口:

public interface IPassportForThird {
    ApiResponse loginForQQ(String openId);

    ApiResponse loginForWechat(String openId);

    ApiResponse<String> loginForRegist(String userName, String password);
}

最后創建統一適配器。

@Slf4j
public class PassportForThirdAdapter extends UserLoginService implements IPassportForThird{
    @Override
    public ApiResponse loginForQQ(String openId) {
        return doLogin(openId,LoginForQQAdapter.class);
    }

    @Override
    public ApiResponse loginForWechat(String openId) {
        return doLogin(openId,LoginForWeChatAdapter.class);
    }

  
    @Override
    public ApiResponse<String> loginForRegist(String userName, String password) {
        super.login(userName, password);
        return super.login(userName, password);
    }
    
    //用到簡單工廠模式以及策略模式
    private ApiResponse doLogin(String openId,Class<? extends LoginAdapter> clazz) {
        try {
            LoginAdapter adapter = clazz.newInstance();
            if(adapter.support(adapter)){
                return adapter.login(openId,adapter);
            }
        }catch (Exception e) {
            log.error("exception is",e);
        }
        return null;
    }
}

最終我們看一下實現的類圖:

適配器結構圖

上述我們就用了適配器的模式簡單重構了現有的第三方登錄的代碼,當然上述可能還存在一些代碼的缺陷,大家也不要太過較真,在此給大家在日常開發中多點思路。

大家可能會對每個適配器的support()方法有點疑問,用來決斷兼容。這里support()方法的參數也是Object類型的,而support()方法來自接口。適配器的實現并不依賴接口,其實我們也可以直接將LoginAdapter移除。

在上述重構的例子中,其實咱們不僅僅用到了適配器模式,其實還用到了簡單工廠模式的特性。

五、總結

其實在我們日常的開發中,適配器模式是比較常用的一種設計模式,不僅僅使用上述場景,其實在很多其他api的對接的場景也有適用。例如,在電商業務場景中會涉及到各種對接,說到買賣就會牽扯到供應商的對接,第三方分銷渠道客戶的對接,其中必然涉及模型不一致需要適配轉換的場景,比如供應商商品信息和標準商城商品信息等等。當然老貓在此也只是做了一下簡單羅列。希望大家在后面的工作中可以參考用到。

責任編輯:趙寧寧 來源: 程序員老貓
相關推薦

2015-11-05 16:44:37

第三方登陸android源碼

2021-12-06 09:44:30

鴻蒙HarmonyOS應用

2015-01-20 17:01:30

Android源碼QQdemo

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2025-06-26 08:15:00

JustAuth

2025-02-05 10:19:24

2019-09-03 18:31:19

第三方支付電商支付行業

2017-12-11 15:53:56

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

2023-07-07 13:32:03

第三方安全風險網絡安全

2018-03-12 13:47:27

2023-04-16 19:34:01

2010-05-25 11:09:31

SVN工具

2017-05-16 13:24:02

LinuxCentOS第三方倉庫

2014-07-22 10:56:45

Android Stu第三方類庫

2024-04-03 12:57:29

2009-01-14 12:45:05

MSNIM蘋果

2021-09-26 10:43:08

注冊Istio集成
點贊
收藏

51CTO技術棧公眾號

亚洲精品乱码久久久久久蜜桃91| 国产精品久久久久久久app| 91精产国品一二三| 理论不卡电影大全神| 久久久亚洲高清| 91精品国产自产在线| 久久香蕉精品视频| 精品美女久久久| 久久99精品久久久| 欧美久久久精品| 国产呦小j女精品视频| 欧美a视频在线| 亚洲成人免费影院| 一区二区精品在线观看| 天堂在线观看视频| 激情深爱一区二区| 2019国产精品自在线拍国产不卡| 免费看裸体网站| 亚洲国产欧美国产第一区| 欧美日韩中文字幕在线| 欧美性受xxxx黑人猛交88| 色猫av在线| 国产在线播精品第三| 日本成熟性欧美| 欧美激情精品久久| 91成人短视频在线观看| 狠狠干狠狠久久| 国产另类自拍| 国产精品日韩无码| 丝袜国产日韩另类美女| 久久琪琪电影院| 在线日韩国产网站| 国产精品一级在线观看| 欧美色道久久88综合亚洲精品| www.黄色网址.com| 337p日本欧洲亚洲大胆鲁鲁| 99久久久精品| 国产99视频精品免费视频36| 久久国产免费观看| 久久久久亚洲| 伊人激情综合网| 性少妇bbw张开| 美国一区二区| 精品国产免费一区二区三区四区| 日韩av片免费观看| 国产成人精品一区二区三区免费| 色综合久久久久| 日韩中文字幕av在线| 色香蕉在线视频| 国产98色在线|日韩| 亚洲中国色老太| 99热精品在线播放| 一区二区国产精品| 国内精品美女av在线播放| avtt天堂在线| 中文无码久久精品| 欧美成在线视频| 欧美日韩免费一区二区| 欧美日本一区二区视频在线观看| 欧美老女人性视频| 久久综合色综合| 亚洲高清不卡| 欧美最顶级丰满的aⅴ艳星| www..com国产| 久久精品官网| 国产精品入口福利| 一本色道久久综合亚洲| 极品销魂美女一区二区三区| 亚洲一区二区久久久久久久 | 日韩欧美在线观看| 日韩亚洲在线视频| 精品三级在线| 日韩一卡二卡三卡国产欧美| 人妻巨大乳一二三区| eeuss国产一区二区三区四区| 亚洲第一福利在线观看| 中文在线一区二区三区| 精品国产aⅴ| 国产一级揄自揄精品视频| 欧美色图17p| 欧美日一区二区在线观看 | 国产91精品入口| 国产精品露出视频| 男女视频在线观看免费| 中文字幕在线一区免费| 天堂8在线天堂资源bt| 国产色a在线| 国产精品九色蝌蚪自拍| 久久福利一区二区| 中文字幕不卡三区视频| 精品视频在线免费看| 激情小说欧美色图| 九九热爱视频精品视频| 久久久精品国产网站| 精品国产成人亚洲午夜福利| 国产精品91一区二区三区| 久久久女人电视剧免费播放下载| 69国产精品视频免费观看| 亚洲成人资源| 国产精品十八以下禁看| 亚洲av无码乱码国产麻豆| 久久午夜羞羞影院免费观看| 日本一区二区免费高清视频| 亚洲色图官网| 日韩一区二区三区免费看 | 免费一区二区三区在线观看| 一区二区三区四区高清视频 | 免费影视亚洲| 欧美在线色视频| 国产免费黄视频| 91超碰在线播放| 欧美日韩电影一区| 特级西西人体wwwww| 国产精品99久久久久久动医院| 性色av一区二区三区免费| 中文字字幕在线中文乱码| 视频精品一区二区| 国产91社区| 免费的黄网站在线观看| 日本久久一区二区三区| 无码成人精品区在线观看| 欧美xxxx中国| 国产精品aaa| 五月婷婷伊人网| 一区二区三区影院| 老子影院午夜伦不卡大全| 深夜日韩欧美| 一二美女精品欧洲| 日韩久久中文字幕| 成人精品免费看| 久久99精品久久久久久三级| av免费在线网站| 亚洲国产精品久久不卡毛片| 中文字幕66页| 日韩欧美不卡| 国产精品久久久久久一区二区 | 中文字幕日韩高清| 中文字幕高清在线免费播放| 99久久精品国产导航| 99久久免费观看| 欧美日本三级| 亚洲国模精品一区| 男人操女人动态图| 亚洲一区免费| 乱色588欧美| 午夜影院在线播放| 亚洲精品午夜精品| 黄色片网站在线免费观看| 91碰在线视频| av片中文字幕| 国产精品手机在线播放| 国产成人亚洲精品| 搞黄视频免费在线观看| 欧美在线观看视频在线| 国产午夜精品久久久久久久久| 青青草国产成人av片免费| 婷婷四房综合激情五月| 人交獸av完整版在线观看| 欧美成人伊人久久综合网| 欧美精品乱码视频一二专区| 国产iv一区二区三区| 日韩视频在线视频| 日韩啪啪网站| 国产成人精品综合久久久| shkd中文字幕久久在线观看| 欧美日韩欧美一区二区| 岛国毛片在线观看| fc2成人免费人成在线观看播放| 久久精品国产sm调教网站演员| 91精品影视| 社区色欧美激情 | 国产三级三级在线观看| 亚洲成人动漫在线观看| 免费看污片网站| 久久成人精品无人区| 今天免费高清在线观看国语| 加勒比色综合久久久久久久久| 欧美一区视频在线| 婷婷在线视频| 精品国产精品一区二区夜夜嗨| 久久久久久久久久久久久av| 亚洲国产经典视频| 亚洲三级在线视频| 久久激情网站| 男女爱爱视频网站| 思热99re视热频这里只精品| 国产精品羞羞答答| 密臀av在线| 中文字幕亚洲专区| 亚洲精品网站在线| 欧美视频精品在线| 国产无码精品在线观看| 国产美女主播视频一区| 狠狠干 狠狠操| 999成人网| 久久久精品有限公司| 视频91a欧美| 日本中文字幕有码| 翔田千里一区二区| 福利网在线观看| 蜜桃一区av| 91精品国产自产在线老师啪| av资源新版天堂在线| 日韩在线视频中文字幕| 天天摸夜夜添狠狠添婷婷| 欧美日韩精品一区二区三区| 日韩无码精品一区二区三区| 中文字幕中文乱码欧美一区二区| 亚洲熟女一区二区| 国产综合久久久久影院| 黄色高清无遮挡| 国自产拍偷拍福利精品免费一 | 亚洲av毛片在线观看| 乱码第一页成人| 日韩精品一区二区免费| 国产精品99在线观看| 欧美日韩亚洲一区二区三区在线观看| 香蕉大人久久国产成人av| 国产精品视频免费观看www| 女人高潮被爽到呻吟在线观看| 久久不射热爱视频精品| 成人精品福利| 亚洲乱码一区av黑人高潮| 国产香蕉在线观看| 日韩一区二区三区电影在线观看 | 亚洲国产第一页| 国产精品怡红院| 欧美三级三级三级| 中文字幕在线播| 懂色av中文一区二区三区天美 | 日韩欧美在线一区| 日韩 欧美 综合| 亚洲成a人v欧美综合天堂下载| 999精品视频在线观看播放| 国产欧美一区二区精品性色 | 日韩精品一卡| 欧美重口乱码一区二区| 青青草久久爱| 久久av免费一区| 精品国产影院| 国产精品我不卡| 国产精品45p| 韩国成人一区| 色天下一区二区三区| 玖玖玖精品中文字幕| 亚洲国产最新| 美乳少妇欧美精品| 黄色成人在线| 欧美成人精品一区二区三区| 黄色网页网址在线免费| 久久亚洲国产精品成人av秋霞| 91se在线| 久久成人在线视频| 在线xxxx| 亚洲 日韩 国产第一| 中文一区一区三区高中清不卡免费| 91po在线观看91精品国产性色| 日本在线啊啊| 国产成人精品免高潮费视频| 51一区二区三区| 成人免费网站在线看| 日韩高清在线观看一区二区| 国产福利久久精品| 亚洲另类av| 亚洲欧洲另类精品久久综合| 午夜欧美在线| 屁屁影院ccyy国产第一页| av不卡免费看| 999精品网站| 精品一区二区三区免费| 91精品人妻一区二区三区蜜桃2 | 久久99精品久久久久久久久久| 亚洲欧洲色图| 亚洲欧洲日韩精品| 国产精品激情| 北条麻妃在线观看| 麻豆91精品视频| 久久久久亚洲AV成人网人人小说| 91在线视频在线| 大吊一区二区三区| 亚洲尤物视频在线| 69视频免费看| 91精品国产日韩91久久久久久| 欧美一区二区三区激情| 在线电影av不卡网址| 一色桃子av在线| 热re91久久精品国99热蜜臀| 999精品嫩草久久久久久99| 国产富婆一区二区三区 | 成人黄色av网站在线| 国产aⅴ激情无码久久久无码| 中文字幕综合网| 你懂的国产在线| 日韩视频一区在线观看| 日本视频在线观看一区二区三区| www国产精品com| 国产在线网站| 日韩电影中文字幕| 日韩成人影视| 欧美有码在线视频| 日韩精品三级| 先锋影音日韩| 亚洲欧美日韩国产综合精品二区 | 91麻豆国产在线观看| 久久av红桃一区二区禁漫| 岛国视频午夜一区免费在线观看| 国产av无码专区亚洲av| 一本大道久久加勒比香蕉| 国产盗摄一区二区| 91天堂在线观看| 欧美精品一区二区三区中文字幕 | 成人精品动漫| 久久精品国产精品国产精品污| 自拍偷拍欧美| 久久久久久蜜桃一区二区| www亚洲一区| 久久久.www| 制服丝袜在线91| a√资源在线| 欧洲成人在线视频| 欧美顶级毛片在线播放| 国产成人亚洲综合无码| 美女视频一区二区三区| 99久久久无码国产精品性| 亚洲成va人在线观看| 性猛交xxxx乱大交孕妇印度| 精品国产区一区二区三区在线观看| 在线国产成人影院| 欧美激情第六页| 免播放器亚洲| 国产高清自拍视频| 亚洲a一区二区| 秋霞av鲁丝片一区二区| 九九九久久国产免费| 高清一区二区三区av| 亚洲综合欧美日韩| 蜜臀久久99精品久久久久宅男| 免费一级做a爰片久久毛片潮| 欧美日韩亚洲网| 色综合久久网女同蕾丝边| 26uuu久久噜噜噜噜| 日韩精品丝袜美腿| 欧美亚洲国产成人| 久久伊人蜜桃av一区二区| 人妻 日韩精品 中文字幕| 国产丝袜视频一区| 色尼玛亚洲综合影院| 人偷久久久久久久偷女厕| 免费视频久久| 变态另类ts人妖一区二区| 欧洲精品中文字幕| 99中文字幕一区| 成人黄色在线观看| 欧美va亚洲va日韩∨a综合色| 阿v天堂2018| www.亚洲国产| 草久久免费视频| 亚洲一区二区福利| 欧美亚洲人成在线| 特级西西人体www高清大胆| 国产高清一区日本| 福利一区二区三区四区| 国产视频精品免费播放| 色婷婷综合久久久中字幕精品久久| 日韩欧美精品一区二区| 蜜臀av一级做a爰片久久| 999精品在线视频| 精品国产区一区| 久久夜夜操妹子| 国产成年人在线观看| 国产1区2区3区精品美女| 国产成人无码精品久在线观看| 亚洲欧美变态国产另类| 日韩成人一区| 18禁裸男晨勃露j毛免费观看| 91蜜桃网址入口| 一区二区三区www污污污网站| 欧美疯狂xxxx大交乱88av| 三级精品视频| 日本在线播放一区二区| 夜色激情一区二区| 黄色国产在线| 4444kk亚洲人成电影在线| 亚洲综合二区| www日韩在线| 精品无人区太爽高潮在线播放| 成人亚洲网站| 亚洲不卡中文字幕无码| 国产精品视频第一区| 刘亦菲久久免费一区二区| 国产精品久久久久久超碰| 亚洲国产国产亚洲一二三| 国产黄色录像视频| 91久久精品网| 国产原创精品视频| 欧美一区免费视频| 成熟亚洲日本毛茸茸凸凹| 免费日韩在线视频| 亚洲天堂av电影| 97久久亚洲|