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

用戶注冊這樣玩,保你平安

開發 前端
除了能讓用戶正常注冊外,有時候還需要確保用戶一個手機號只能注冊一個賬號,完成對用戶手機號在商城的唯一性保障。

前言

基本上每個系統系統都包含用戶注冊、發送驗證碼等基本操作。在前些年,我還記得我在逛 csdn、貼吧、網易新聞等網站的時候是可以不登陸也能瀏覽完網頁內容的,但是近幾年這些網站已經改成了不登陸不讓用,瀏覽網頁時不時提醒你要進行登錄,對于一些不喜歡注冊的用戶造成了相當大的困擾。

但是不知道大家有沒有想過這里面的深層邏輯,就是為什么前些年什么 csdn、貼吧、網易新聞等明明不進行登錄瀏覽網頁體驗還行,現在要改成這樣子?

這里面涉及的因素有很多,比如互聯網發展到頭、變現困難、存量環境加劇內卷等。

當公司盈利壓力變大,老板眼看收益日趨降低,便開始拉領導開會,領導開完會開始 PUA 員工,一層一層遞進,輔以績效、okr 等工具制定目標結果。于是公司底層員工的想法從努力賺錢、升職加薪變成保住飯碗、養活一家老小,對于業務上的月度、季度營收要求自然是各種促進用戶付費的手段應上齊上。

這里面提升付費有一個非常重要的前提就是用戶,只要有了用戶就有付費希望。

如果用戶不注冊,不留下手機號、郵箱等個人信息,互聯網運營又怎么給這些用戶發送營銷短信和郵件。所以說強制注冊本質上是為了公司利益。

只要把用戶留下來,留在自己的 APP 里,收集用戶信息,后續各種運營活動、支付彈窗、短信找回、活動抽獎一起上,何愁沒有用戶 ??。

用戶信息記錄的意義是為了聚集 C 端用戶、收集信息,為后續運營活動(提升付費)做準備。就拿淘寶舉例,個性化推薦、千人千面、雙 11 活動等,這一系列運營活動說到底都是為了提升淘寶的付費金額,提升淘寶平臺的 GMV。什么個性化推薦、千人千面說白了就是收集你的個人信息,你的商品點擊、瀏覽、下單等操作都會被淘寶采集,進而通過算法模型進行商品推薦,選出你可能感興趣的商品展示,從而提升淘寶付費金額。

OK,到這里題外話說多了,雖然說用戶注冊是一個很基本的邏輯,但是很多人一不小心就會掉坑里。這里我給大家介紹下 waynboot-mall 項目中用戶注冊是怎么玩的,為什么說可以保你平安。

waynboot-mall 項目是由我開源的一套 H5 商城項目,包含運營后臺、H5 商城前臺和服務端接口。實現了商城所需的首頁展示、商品分類、商品詳情、商品 sku、分詞搜索、購物車、結算下單、支付寶/微信支付、收單評論以及完善的后臺管理等一系列功能。技術上基于最新得 Springboot3.0 框架開發而來,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中間件。商城模塊劃分合理、代碼質量較高、易于部署,非常適合大家拿來學習使用。

github 地址:https://github.com/wayn111/waynboot-mall

用戶注冊

在 waynboot-mall 項目中,商城注冊頁面截圖如下。

圖片圖片

/captcha 生成圖形驗證碼接口

@ResponseBody
@RequestMapping("/captcha")
public R captcha() {
    // 1. 創建驗證碼對象,定義驗證碼圖形的長、寬、以及字數
    SpecCaptcha specCaptcha = new SpecCaptcha(80, 32, 4);
    // 2. 生成驗證碼
    String verCode = specCaptcha.text().toLowerCase();
    // 3. 生成驗證碼唯一key
    String captchaKey = IdUtil.getUid();
    // 4. 存入redis并設置過期時間為30分鐘
    redisCache.setCacheObject(captchaKey, verCode, SysConstants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
    // 5. 將key和base64返回給前端
    return R.success().add("captchaKey", captchaKey).add("image", specCaptcha.toBase64());
}

驗證碼接口基本是每個系統都有的接口,驗證碼主要是為了防止別人直接調用接口進行注冊操作,是一個安全措施。現在市面上流行的有圖形驗證碼、滑塊驗證碼、點選驗證碼等,waynboot-mall 項目中使用的圖形驗證碼,大家有興趣可以了解 tianai-captcha 這個項目,包含滑塊驗證碼、點選驗證碼等。現在我們對驗證碼接口進行講解,

  • 第一步,創建驗證碼對象,定義驗證碼圖形的長、寬、以及字數(這里創建的 SpecCaptcha 對象來自 easy-captcha 項目)
  • 第二步,生成驗證碼 verCode
  • 第三步,為驗證碼生成唯一 captchaKey
  • 第四步,將 captchaKey 作為 key, verCode 作為 value,存入 redis 并設置過期時間
  • 第五步,將 captchaKey 以及驗證碼圖像的 base64 編碼返回給前端

圖片圖片

前端在調用完 /captcha 接口后,會拿到 captchaKey 以及驗證碼圖像的 base64 編碼,之后前端就可以將 base64 編碼作為 img 標簽 src 屬性用作圖形驗證碼展示。

用戶輸入郵箱和圖形驗證碼后就可以點擊發送郵箱驗證碼了。

調用發送郵箱驗證碼接口時會將 captchaKey、驗證碼、手機號等信息一起傳給服務端。

/sendEmailCode 發送郵箱驗證碼接口

@PostMapping("/sendEmailCode")
public R sendEmailCode(@RequestBody RegistryObj registryObj) {
    String captchaKey = registryObj.getCaptchaKey();
    String captchaCode = registryObj.getCaptchaCode();
    String mobile = registryObj.getMobile();
    if (StringUtils.isBlank(captchaKey)) {
        return R.error(CUSTOM_ERROR.setMsg("圖形驗證碼錯誤"));
    }
    if (StringUtils.isBlank(captchaCode)) {
        return R.error(CUSTOM_ERROR.setMsg("圖形驗證碼為空"));
    }
    if (StringUtils.isBlank(mobile)) {
        return R.error(CUSTOM_ERROR.setMsg("手機號為空"));
    }
    String redisCode = redisCache.getCacheObject(captchaKey);
    // 判斷驗證碼code
    if (!redisCode.equals(captchaCode.trim().toLowerCase())) {
        return R.error(USER_CAPTCHA_CODE_ERROR);
    }
    // 驗證手機號是否唯一
    long count = iMemberService.count(Wrappers.lambdaQuery(Member.class).eq(Member::getMobile, mobile));
    if (count > 0) {
        return R.error(USER_PHONE_HAS_REGISTER_ERROR);
    }
    // 生成郵箱驗證碼code
    String emailCode = RandomUtil.randomString(6);
    // 生成郵箱驗證碼唯一key
    String emailKey = RedisKeyEnum.EMAIL_KEY_CACHE.getKey(IdUtil.getUid());
    // 存入redis并設置過期時間為20分鐘
    redisCache.setCacheObject(emailKey, emailCode + "_" + mobile,  RedisKeyEnum.EMAIL_KEY_CACHE.getExpireSecond());
    commonThreadPoolTaskExecutor.execute(() -> {
        EmailConfig emailConfig = mailConfigService.getById(1L);
        SendMailVO sendMailVO = new SendMailVO();
        sendMailVO.setSubject("mall商城注冊通知");
        sendMailVO.setContent("郵箱驗證碼:" + emailCode);
        sendMailVO.setTos(Collections.singletonList(registryObj.getEmail()));
        MailUtil.sendMail(emailConfig, sendMailVO, false, false);
    });
    return R.success().add("emailKey", emailKey);
}

一般商城系統中,發送郵箱驗證碼、短信驗證碼時都需要進行驗證碼輸入這一步驟,這是為了防止別人直接通過接口調用的形式,浪費我們系統的資源,特別是發送手機驗證碼、郵件這種資源。發送郵箱驗證碼接口講解如下,

  • 第一步,校驗 captchaKey、captchaCode、mobile 必傳參數
  • 第二步,根據 captchaKey 讀取 redis 中存放的驗證碼 code,與用戶輸入 captchaCode 進行比較
  • 第三步,驗證用戶手機號是否唯一
  • 第四步,生成六位郵箱驗證碼 emailCode
  • 第五步,生成郵箱驗證碼唯一 emailKey
  • 第六步,將 emailKey 作為 key, emailCode_mobile 作為 value,存入 redis 并設置過期時間(注意這一步將用戶手機號,也存入 Redis 是為了防止用戶在獲取完郵箱驗證碼后修改手機號,這一點很重要,很多開發同學都忘了這一步)
  • 第七步,使用線程池異步發送驗證碼郵件

圖片圖片

前端在調用完 /sendEmailCode 接口后,就可以拿到 emailKey。

這樣等用戶輸入郵箱里的驗證碼后,點擊注冊按鈕,我們就可能正式開始注冊操作了。

/registry 用戶注冊

@PostMapping("/registry")
public R registry(@RequestBody RegistryObj registryObj) {
    // 驗證兩次密碼輸入是否一致
    if (!StringUtils.equalsIgnoreCase(registryObj.getPassword(), registryObj.getConfirmPassword())) {
        return R.error(USER_TWO_PASSWORD_NOT_SAME_ERROR);
    }
    // 驗證用戶手機號是否唯一
    long count = iMemberService.count(Wrappers.lambdaQuery(Member.class).eq(Member::getMobile, registryObj.getMobile()));
    if (count > 0) {
        return R.error(USER_PHONE_HAS_REGISTER_ERROR);
    }

    // 判斷圖形驗證碼
    String redisCaptchaCode = redisCache.getCacheObject(registryObj.getCaptchaKey());
    if (registryObj.getCaptchaCode() == null || !redisCaptchaCode.equals(registryObj.getCaptchaCode().trim().toLowerCase())) {
        return R.error(USER_CAPTCHA_CODE_ERROR);
    }

    // 判斷郵箱驗證碼
    String value = redisCache.getCacheObject(registryObj.getEmailKey());
    String[] split = value.split("_");
    if (split.length < 2) {
        return R.error(ReturnCodeEnum.USER_EMAIL_CODE_ERROR);
    }
    String redisEmailCode = split[0];
    String mobile = split[1];
    // 判斷發送郵箱驗證碼的手機號是否與用戶當前傳入手機號一致
    if (!StringUtils.equalsIgnoreCase(mobile, registryObj.getMobile())) {
        return R.error(ReturnCodeEnum.USER_REGISTER_MOBILE_ERROR);
    }
    // 判斷用戶輸入郵箱驗證碼是否正確
    if (registryObj.getEmailCode() == null || !redisEmailCode.equals(registryObj.getEmailCode().trim().toLowerCase())) {
        return R.error(ReturnCodeEnum.USER_EMAIL_CODE_ERROR);
    }
    // 刪除驗證碼
    redisCache.deleteObject(registryObj.getCaptchaKey());
    redisCache.deleteObject(registryObj.getEmailKey());
    Member member = new Member();
    long time = System.currentTimeMillis();
    member.setNickname("昵稱" + time / 1000);
    String avatar = SysConstants.DEFAULT_AVATAR;
    member.setAvatar(avatar);
    member.setMobile(registryObj.getMobile());
    member.setEmail(registryObj.getEmail());
    member.setPassword(SecurityUtils.encryptPassword(registryObj.getPassword()));
    member.setCreateTime(new Date());
    return R.result(iMemberService.save(member));
}

注冊接口,需要邏輯完善,所以這里的校驗邏輯會比較多,因為一個商城最重要的幾個接口就是注冊、登錄、下單、支付等。

除了能讓用戶正常注冊外,有時候還需要確保用戶一個手機號只能注冊一個賬號,完成對用戶手機號在商城的唯一性保障。除了先查詢用戶手機號是否已存在外,還需要對用戶 member 表的手機號字段設置唯一索引來完成。注冊接口講解如下,

唯一索引可以防止用戶重復點擊注冊按鈕,保證一個手機號只能注冊一個用戶。

  • 第一步,驗證用戶輸入兩次密碼是否一致
  • 第二步,驗證用戶輸入的手機號是否唯一
  • 第三步,驗證用戶輸入的圖形驗證碼是否于 Redis 中存儲一致
  • 第四步,驗證發送郵箱驗證碼的手機號是否于 Redis 中存儲一致
  • 第五步,驗證用戶輸入的郵箱驗證碼是否于 Redis 中存儲一致
  • 第六步,校驗通過,開始刪除圖形驗證碼、郵箱驗證碼
  • 第七步,啟動線程池,異步進行用戶保存操作

圖片 圖片

責任編輯:武曉燕 來源: waynblog
相關推薦

2024-12-03 09:45:34

2020-11-16 13:38:31

PostMessage

2016-12-28 14:51:46

大數據應用

2021-09-05 07:55:37

前端Emoji 表情

2021-07-28 06:10:47

拖拽設計器 transmat

2015-04-16 09:48:12

APP測試

2024-08-02 08:38:20

Controller接口地址

2015-09-22 16:01:08

平安WiFi

2013-08-22 10:28:50

.NET MVC.NETRazor

2009-04-21 10:19:24

Oracle智慧的地球IBM

2024-06-13 08:19:08

Controller接口參數

2018-01-08 07:34:39

比特幣數字貨幣央行

2019-01-29 10:00:59

GitHub開源搜索

2024-05-17 09:37:26

format屬性Spring

2018-12-12 11:30:54

JavaString字符串

2022-05-25 08:42:32

sentinel流控規則

2021-04-09 08:23:30

Css前端加載動畫

2024-01-30 09:21:29

CSS文字效果文字裝飾

2012-03-24 20:31:59

移動游戲

2012-10-24 13:36:50

1億部 iPad跌幅 3.26%
點贊
收藏

51CTO技術棧公眾號

91一区二区三区在线观看| 亚洲看片免费| 精品黑人一区二区三区久久| 丁香六月天婷婷| 精品久久久91| 亚洲欧美aaa| 亚洲婷婷噜噜| 91免费版在线| 国产中文日韩欧美| 国产做受高潮漫动| 91九色精品| 亚洲国产天堂久久国产91| 人妻少妇被粗大爽9797pw| av片在线看| 成人h版在线观看| 国产精品第100页| 国产中文字字幕乱码无限| 国精一区二区| 亚洲国产天堂久久综合网| 在线不卡一区二区三区| 国产精品25p| 亚洲欧洲无码一区二区三区| 国产精品入口免费| 一级黄色片在线看| 久久婷婷亚洲| 午夜精品久久久久久久久久久久久| 成人国产精品久久久网站| 91精品国产自产在线丝袜啪| 欧美亚一区二区| 熟女少妇在线视频播放| 亚洲七七久久综合桃花剧情介绍| 国产欧美一区二区精品性| 国产欧美日韩一区| 99在线小视频| 韩国精品久久久| 国产精品视频99| 伊人中文字幕在线观看| 激情久久一区| 九色精品免费永久在线| 一级免费黄色录像| 国产一区二区三区四区五区传媒| 亚洲精品乱码久久久久久金桔影视| 亚洲国产午夜精品| 韩国精品视频在线观看| 色菇凉天天综合网| 亚洲午夜精品久久久久久人妖| 在线免费观看的av| 亚洲日本丝袜连裤袜办公室| 性欧美videosex高清少妇| 日韩电影免费| xfplay精品久久| 精品久久久久久亚洲| 欧美 中文字幕| 丰满岳乱妇一区二区三区| 91九色综合久久| 97人妻人人澡人人爽人人精品 | 色婷婷综合成人av| 久久日免费视频| 精品美女久久久| 亚洲一区二区久久久| 亚洲人成人无码网www国产| 亚洲精品亚洲人成在线观看| 精品伊人久久97| 中文字幕一区二区人妻在线不卡 | 欧美日韩精品一区| 青青久在线视频免费观看| 91老司机福利 在线| 狠狠久久综合婷婷不卡| 五月婷婷丁香网| 久久亚洲影视婷婷| 欧美在线播放一区| 日韩免费网站| 亚洲综合图片区| 男人日女人视频网站| 天堂中文在线播放| 欧美少妇bbb| 午夜激情视频网| 成人h动漫免费观看网站| 日韩精品高清视频| 亚洲女人毛茸茸高潮| 在线成人直播| 热草久综合在线| 这里只有精品6| 国产精品亚洲专一区二区三区| 粉嫩精品一区二区三区在线观看 | 国产一区二区三区免费在线| 欧美一区二区免费视频| 黄色在线免费播放| 国产欧美日韩精品高清二区综合区| 伊是香蕉大人久久| 国内偷拍精品视频| 国产亚洲欧美在线精品| 欧美残忍xxxx极端| 欧美韩日一区二区| 毛片在线免费播放| 国产精品1区2区3区在线观看| 国产精品一区二区三区在线| 邻家有女韩剧在线观看国语| 中文字幕色av一区二区三区| 久久免费一级片| 欧美男男tv网站在线播放| 色偷偷久久一区二区三区| 91网址在线观看精品| 好吊妞国产欧美日韩免费观看网站| 国产丝袜高跟一区| 欧美性生交大片| 国产一区二区三区久久久久久久久| 久久久久国产精品www| 五月激情丁香网| 国产伦精品一区二区三区免费迷| 97超级碰碰| 欧洲一级在线观看| 亚洲人成小说网站色在线 | 精品久久久久久久久久ntr影视| 欧美日韩在线中文| 久久国产精品美女| 在线精品高清中文字幕| 免费视频一二三区| 免费成人性网站| 国产区一区二区三区| 椎名由奈jux491在线播放| 亚洲第一视频在线播放| av福利精品导航| 日韩中文在线字幕| 色综合天天色| 日韩成人在线视频观看| 人人澡人人澡人人看| 老司机一区二区三区| 成人网欧美在线视频| 邻居大乳一区二区三区| 天天影视涩香欲综合网| 日本77777| 精品一区av| 国语自产精品视频在线看一大j8| 在线视频 中文字幕| 国产色产综合色产在线视频| 国产色一区二区三区| 欧一区二区三区| 日韩中文在线中文网在线观看| 久热这里只有精品在线| 久久av老司机精品网站导航| 久中文字幕一区| h片在线观看视频免费| 欧美福利电影网| 精品国产aaa| 天堂蜜桃一区二区三区| 国产在线精品一区二区三区》 | 欧日韩免费视频| 日韩08精品| 国产一区二区欧美日韩| 精品久久久久久久久久久久久久久久久久| 国产高清精品网站| eeuss中文| 外国电影一区二区| 亚洲人成电影网站色www| av大全在线观看| 久久影院视频免费| 一本大道熟女人妻中文字幕在线 | 欧美一区二区三区喷汁尤物| 老头老太做爰xxx视频| 亚洲欧美成人| 女女同性女同一区二区三区91| japanese色国产在线看视频| 日韩免费福利电影在线观看| 五月天婷婷色综合| 国产在线观看一区二区| 中文字幕av日韩精品| 久久爱.com| 两个人的视频www国产精品| 亚洲专区第一页| 国产精品久久久久久久久快鸭 | 亚洲一区欧美激情| 美日韩免费视频| 中文字幕在线视频久| 亚洲日本中文字幕| 天堂网一区二区| 中文字幕在线不卡一区| 中文字幕乱码在线人视频| 亚洲欧美综合国产精品一区| 亚洲一区二区三区毛片| 亚洲制服国产| 亚洲福利在线观看| 欧美国产日产韩国视频| 久久久久香蕉视频| 91偷拍与自偷拍精品| 午夜免费一区二区| 亚洲成人精品| 国产日韩三区| 国产一区高清| 欧美—级a级欧美特级ar全黄| 男人的天堂在线视频| 欧美无乱码久久久免费午夜一区| 亚洲天堂网av在线| 菠萝蜜视频在线观看一区| 免费观看日韩毛片| 99久久九九| 美日韩精品免费| 伊人久久大香线蕉综合影院首页| 色综合色综合久久综合频道88| 亚洲精品97久久中文字幕| 欧美日韩国产在线播放| 成人h动漫精品一区| 国产一区二区三区四区五区入口| 欧美亚洲黄色片| 精品国产一区二区三区久久久樱花 | 97av在线影院| 超碰在线观看免费| 亚洲激情视频在线播放| 无码人妻精品一区二| 亚洲欧美日韩国产手机在线| 国产熟女高潮一区二区三区| 日韩av网站免费在线| 裸体大乳女做爰69| 国产亚洲欧美日韩在线观看一区二区 | 日韩欧美国产三级电影视频| 成人免费视频毛片| 亚洲手机成人高清视频| 爱爱的免费视频| 成人性生交大合| 伊人网在线综合| 国产色综合网| 日本天堂免费a| 凹凸成人精品亚洲精品密奴| 国产91精品入口17c| 97久久中文字幕| 国产成人精品在线播放| hd国产人妖ts另类视频| xxxxx91麻豆| 飘雪影院手机免费高清版在线观看 | 久久九九全国免费精品观看| 四虎精品在永久在线观看| 日韩欧美一级精品久久| 亚洲午夜久久久影院伊人| 成年人在线视频免费观看| 日韩精品福利网站| 亚洲av永久纯肉无码精品动漫| 欧美少妇一区二区| 无码无套少妇毛多18pxxxx| 精品久久久国产精品999| xxxx日本少妇| 亚洲男人天堂一区| 自拍偷拍你懂的| 国产色综合久久| www.日本高清视频| 久久九九国产精品| 性欧美丰满熟妇xxxx性仙踪林| 不卡一卡二卡三乱码免费网站| 网站在线你懂的| 久久99国产精品尤物| 国产aaaaa毛片| 日日夜夜精品视频天天综合网| 欧美成人精品免费| 日韩天堂av| 国产96在线 | 亚洲| 精品白丝av| av在线免费观看国产| 欧美精品91| 久久国产精品网| 伊人成年综合电影网| 国产91视频一区| 国产真实久久| 青青草国产精品视频| 亚洲一区自拍| 国语对白做受xxxxx在线中国| 99精品国产福利在线观看免费 | 午夜视频成人| 夜夜揉揉日日人人青青一国产精品| 亚洲成人蜜桃| 国内精品久久久久久久久电影网| 日本免费高清一区二区| 综合亚洲自拍| 欧美亚洲视频一区| 中文字幕亚洲综合久久五月天色无吗''| 自拍偷拍99| 欧美午夜a级限制福利片| 国产超级av在线| 日韩电影一二三区| 国产精品一区二区小说| 国产一区二区在线影院| 好吊操视频这里只有精品| 国产丶欧美丶日本不卡视频| 国产十八熟妇av成人一区| 91视频一区二区三区| 免费人成又黄又爽又色| 国产精品色在线| 看黄色录像一级片| 亚洲黄色免费电影| 香蕉免费毛片视频| 欧美专区在线观看一区| 一二区在线观看| 精品国产一区二区三区忘忧草 | 奇米影视第四色777| 一本高清dvd不卡在线观看| 在线视频 91| 精品女同一区二区| 欧美伦理影视网| 久久精品91久久香蕉加勒比| 色呦呦呦在线观看| 国产99在线|中文| 成人日韩视频| 成人欧美一区二区三区黑人孕妇| 另类在线视频| 亚洲综合视频一区| 亚洲激情国产| 男人添女人下面免费视频| 国产suv精品一区二区三区| 水蜜桃一区二区三区| 国产在线拍揄自揄拍视频| 91chinesevideo永久地址| 亚洲四虎影院| 国产91亚洲精品一区二区三区| 国产一区二区三区四区五区传媒 | 久久尤物电影视频在线观看| 国产又粗又长免费视频| 精品国产31久久久久久| 国产精品高潮呻吟久久久| 亚洲国产精品成人va在线观看| 男人晚上看的视频| 黄色在线免费网站| 麻豆久久婷婷| 欧美日韩精品免费| 国产一区二区三区四区hd| 国产熟妇搡bbbb搡bbbb| 欧美一区二区三区在线观看免费| 久久在线视频免费观看| 国产精品福利一区二区三区| 欧美国产精品va在线观看| 欧美xxxxx在线视频| 午夜久久久久久久久久| 欧美日韩国产在线观看网站 | 性色av一区二区三区| 国产精品videossex国产高清 | 亚洲综合网站在线观看| 久久亚洲精品毛片| 欧美日韩亚洲一| 国产乱码在线观看| 成人51免费| www国产精品av| 亚洲欧美国产一区二区三区| 欧美另类网站| 国产这里有精品| 刘亦菲一区二区三区免费看| 韩国女主播成人在线观看| 亚洲精品一区二区三区婷婷月| 17c丨国产丨精品视频| 国产乱码精品一区二三区蜜臂| 水蜜桃精品av一区二区| 91久久一区二区| 精品国产一区二区三区麻豆小说 | 亚洲第一在线播放| 欧美大片一区二区三区| 免费黄色网页在线观看| 国产第一区电影| 亚洲都市激情| 波多野结衣家庭教师在线| 国产在线视视频有精品| 永久免费看黄网站| 日韩一区二区免费视频| caoporm免费视频在线| 成人免费福利在线| 天天av综合| 国产一级免费大片| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲成人免费网站| 国产桃色电影在线播放| 3d动漫精品啪啪一区二区三区免费 | 综合一区二区三区| 欧美丰满熟妇bbb久久久| 一区在线观看视频| 精品人妻伦一二三区久久| 欧美国产精品va在线观看| 国产精品x8x8一区二区| 国产精品专区在线| 久久一区二区三区国产精品| av毛片在线免费观看| 色七七影院综合| 精品亚洲a∨一区二区三区18| youjizz.com亚洲| 国产ts人妖一区二区| www.日本精品| 亚洲色图第一页| 色噜噜成人av在线| 国产精品啪啪啪视频| 成人午夜电影网站| 中文字幕亚洲精品在线| 国产午夜精品一区二区三区| 国产精品成人国产| 可以在线看的av网站| 国产日韩欧美综合一区| 日韩视频免费中文字幕| 亚洲一区二区三区久久久| 精品免费久久久久久久| 91女人视频在线观看| 国产精品自拍第一页| 久久综合色影院| 秋霞综合在线视频| 亚洲综合av在线播放| 午夜精品123| 视频一区二区三区不卡| 成人免费观看网站|