精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

男男成人高潮片免费网站| 国外成人在线直播| 欧美日韩国产欧| 一本一道人人妻人人妻αv| 国产精品一区视频网站| 一区二区三区在线视频播放| 人人玩人人添人人澡欧美| 97人妻精品一区二区三区免 | 亚洲精品国产a久久久久久 | 亚洲精品美女久久7777777| 婷婷丁香久久五月婷婷| 福利电影一区| www.国产色| 欧美一区免费视频| 日本国产一区二区| 精品理论电影| www.国产三级| 黄色一级片国产| 日韩黄色高清视频| 日日骚欧美日韩| 暖暖日本在线观看| 亚洲视频在线不卡| 久久免费国产精品1| 久久综合色之久久综合| 成人激情四射网| 欧美亚洲国产一区二区三区va| www一区二区三区| 国内自拍视频在线播放| 水蜜桃色314在线观看| 久久99精品久久久久久琪琪| 国产精品久久久一本精品| 性国裸体高清亚洲| 超碰在线超碰在线| 一区二区三区www| 欧美亚洲三区| 欧美自拍偷拍一区二区| 四虎永久免费网站| 欧美日韩精品一区二区三区| 婷婷精品视频| 久久久国产高清| 国内精品二区| 伊人夜夜躁av伊人久久| 外国成人毛片| 久久高清内射无套| 亚洲jizzjizz日本少妇| 亚洲欧美另类在线| 精品视频在线观看免费观看| 曰本女人与公拘交酡| 99电影网电视剧在线观看| 日韩欧美亚洲一二三区| 午夜精品999| www.久久热.com| www.男人天堂| 亚洲一区亚洲二区亚洲三区| 欧美日韩亚洲一区二区| 欧美二区不卡| www在线视频| 国产精品酒店视频| 欧美日韩三区四区| 精品国产精品一区二区夜夜嗨| 美国毛片一区二区三区| 日韩久久一区二区三区| 国产成人无码精品亚洲| 激情五月婷婷六月| 不卡伊人av在线播放| 日韩一区中文字幕| 欧美日韩一二| 3p视频在线观看| 日本美女xxx| 欧洲成人一区二区| 亚洲人成网站777色婷婷| 不卡的看片网站| 荡女精品导航| 色噜噜在线播放| 国产日韩欧美在线观看视频| 91免费电影网站| 亚洲香蕉成人av网站在线观看 | 91网在线看| 6—12呦国产精品| 日本视频在线免费| 男女爱爱视频网站| 欧美黑人极品猛少妇色xxxxx| 亚洲一级二级在线| 亚洲国产高清一区| 在线观看欧美日韩电影| 91tv国产成人福利| 加勒比精品视频| 亚洲国产欧美不卡在线观看 | 爱情岛论坛亚洲首页入口章节| 国产精品日韩欧美综合| 亚洲国产精华液网站w| 久久夜色电影| 黄网站在线免费看| 日韩成人在线免费视频| 日韩一级在线免费观看| 91麻豆桃色免费看| 亚洲欧美综合精品久久成人| 亚洲美女视频在线| 免费观看一级特黄欧美大片| 国产成人福利av| 久久久久久国产精品免费无遮挡| 少妇高潮av久久久久久| 日本中文字幕在线不卡| 午夜视频久久久| 97国产精品视频| 日韩欧美一级二级| 中文字幕欧美激情| 噜噜爱69成人精品| 免费看成人吃奶视频在线| 樱花草涩涩www在线播放| 人操人视频在线观看| 在线观看国产黄| 加勒比av在线播放| 亚洲激情视频小说| 无套内谢丰满少妇中文字幕| 男女日批视频在线观看| 欧美一区1区三区3区公司| 国产欧美日韩91| 美乳少妇欧美精品| 亚洲欧美国产另类| 欧美日本国产视频| 精品色蜜蜜精品视频在线观看| 国产女主播一区| 成人av免费在线观看| 美国欧美日韩国产在线播放| 在线成人av| 午夜久久免费观看| 精品视频亚洲| 国产精品天天看天天狠| 欧美视频在线视频精品| 天堂中文av在线资源库| av黄在线观看| 成年人在线观看| 特黄视频在线观看| 国产乱叫456在线| 香蕉免费毛片视频| 午夜免费激情视频| 亚洲第一页av| 午夜性福利视频| 精品人妻人人做人人爽夜夜爽| 久久久久免费精品| 中文字幕无码精品亚洲35| 丰满的少妇愉情hd高清果冻传媒| 欧美在线激情| 日本不卡一区二区三区在线观看 | 少妇视频一区二区| 成人无码www在线看免费| 天天干天天综合| 欧美激情国产精品日韩| 北条麻妃69av| 无码人妻精品一区二区蜜桃网站| 亚洲欧美日韩国产yyy| 久久久久久99| 欧美中文娱乐网| 欧美国产一区二区在线| 狠狠爱一区二区三区| 国产aⅴ夜夜欢一区二区三区 | www激情五月| 色网站在线视频| 8x8x成人免费视频| 欧美成人手机在线视频| 国产性生活一级片| 一起操在线视频| 91制片厂毛片| 日本三级日本三级日本三级极| 高清中文字幕mv的电影| 一区二区视频观看| 亚洲久久久久久久| 夫妇交换中文字幕| 国产黄在线免费观看| 国产在线拍揄自揄拍无码视频| 麻豆成人在线视频| 日本韩国欧美中文字幕| 伊人网中文字幕| 国产按摩一区二区三区| 天天色天天操天天射| porn亚洲| 18aaaa精品欧美大片h| 精品176极品一区| 无码国模国产在线观看| 台湾色综合娱乐中文网| 欧美成人69| 老色鬼久久亚洲一区二区| 国产一区二区在线影院| 五月婷婷六月综合| 翔田千里一区二区| 精品一区二区成人精品| 久久久久久99久久久精品网站| 一区二区中文视频| 色呦呦日韩精品| 精品国产免费久久| xx视频.9999.com| 国产91精品最新在线播放| 国产精品一区免费观看| 永久免费看av| 福利片一区二区三区| 黄瓜视频污在线观看| 久久久久亚洲av无码专区| 欧美成人一区二区视频| 免费资源在线观看| 亚洲精品一级二级| 一区二区三区韩国免费中文网站| 亚洲大胆视频| 成av人片一区二区| 亚洲福利视频导航| 亚洲国产精彩中文乱码av在线播放| 久久天天躁日日躁| 91精品一区二区| 成人免费看片'免费看| 欧美日韩一区二区区| 欧美xxxx黑人xyx性爽| 亚洲av无码国产综合专区| 天堂8中文在线| 国内精品国产成人国产三级粉色| 韩国精品一区二区三区| 不卡一区中文字幕| 色欧美日韩亚洲| 在线精品国产欧美| 国产在线精品成人一区二区三区| 97超碰人人爱| 一本色道综合久久欧美日韩精品 | 欧美国产日韩视频| 国产亚洲精品自在久久| 日本成年人网址| 欧美做爰啪啪xxxⅹ性| 亚洲黄色精品视频| 51一区二区三区| 狠狠爱综合网| 欧美国产日韩亚洲一区| 日韩亚洲欧美一区二区三区| 欧美一级在线亚洲天堂| 中文字幕一区二区三区在线乱码| www男人天堂| 精品国精品国产自在久不卡| 成人ssswww在线播放| 国产精品久久久久蜜臀| 久久久久久久综合狠狠综合| 日韩一区二区三区av| 国产精品毛片a∨一区二区三区|国| 黄网站色视频免费观看| 三级全黄做爰视频| 成人性生交大片免费看午夜 | 午夜影院在线观看国产主播| 午夜影院欧美| 亚洲三级电影网站| 亚洲性生活视频在线观看| 高清免费日韩| 欧美性生交xxxxx| 黄色av免费观看| 99久久人爽人人添人人澡| 国产一区欧美一区| 欧美精三区欧美精三区| 国产精品99久久久久久白浆小说| 国产淫片免费看| 一二三区免费视频| 国产成人精品一区二区三区免费| 久久蜜桃资源一区二区老牛| 欧美日韩免费网站| 日韩免费在线观看视频| www.色就是色| 国产精品久久久久久69| 国色天香久久精品国产一区| 国产精品香蕉一区二区三区| 8v天堂国产在线一区二区| 高清日韩一区| 日本丰满少妇裸体自慰 | 中文字幕有码视频| 精品视频一区二区三区在线观看| 丁香婷婷综合网| 亚洲毛片一区二区| 日韩精品成人一区二区在线观看| 91高清免费观看| 草草在线视频| 老司机免费视频一区二区| 日韩欧美一级特黄在线播放| 狠狠色狠狠色综合人人| 阿v天堂2014| 啦啦啦中文在线观看日本| 久久精品女人| 日韩精品一区二区三区视频播放 | 国产日韩精品一区二区三区| 久久好看免费视频| 免费av网址在线| 日韩一区二区三区不卡| 欧美国产美女| 日本精品一区二区三区四区的功能| 91在线网站视频| 国产在线综合视频| 欧美黑人一区| 久久久久综合网| 欧美精品999| 国产免费中文字幕| 日本欧美在线视频免费观看| 六月婷婷一区| 亚洲女人被黑人巨大进入al| 和岳每晚弄的高潮嗷嗷叫视频 | 欧美好骚综合网| 欧美日韩一区在线| 日本不卡久久| 国产尤物在线观看| 久久中文字幕av| 欧美系列日韩一区| 天堂√在线观看一区二区| 黄色片网站在线免费观看| 美女主播精品视频一二三四| 精品国产乱码久久久久久婷婷| 国产成人免费电影| 一区二区三区视频免费看| 欧美黄色影院| 91成人免费电影| 伊甸园精品99久久久久久| 91极品身材尤物theporn| 亚洲精品国产成人影院| 日韩欧美国产小视频| 国产96在线 | 亚洲| 少妇精品高潮欲妇又嫩中文字幕| 亚洲作爱视频| 一色桃子一区二区| 日本黄大片一区二区三区| 午夜视频在线观看免费视频| 成人免费毛片高清视频| 欧美在线视频一区二区| 手机看片国产日韩| 综合激情久久| 欧美午夜精品电影| 男人的天堂avav| 91精彩视频在线播放| 国产一区二区三区在线观看精品| 久久久天堂国产精品女人| 亚洲黄色小说视频| 哺乳挤奶一区二区三区免费看| 91久久线看在观草草青青| 日本三日本三级少妇三级66| 精品乱码一区二区三四区视频| 国精品**一区二区三区在线蜜桃| 97超碰色婷婷| 极品久久久久久| 日韩免费视频| 精品亚洲一区二区三区| 精品人妻无码中文字幕18禁| 婷婷精品久久久久久久久久不卡| 亚洲国产wwwccc36天堂| 992tv成人免费观看| 午夜激情视频在线| 久久精品欧美日韩| 欧美精品尤物在线| 亚洲av电影一区| 成人深夜在线观看| 超碰97在线资源| 99在线无码精品入口| 久久99精品久久久久久动态图| 国产成人福利网站| 欧美一区二区三区久久久| 亚洲永久视频| 国产成人综合精品| 黑人精品无码一区二区三区AV| 亚洲一区亚洲| 日本午夜人人精品| 在线免费一区二区| 久久97超碰色| 91人成网站www| 国产小视频免费观看| 久久综合久久综合九色| 蜜桃传媒视频麻豆第一区免费观看| 深夜福利视频在线免费观看| 久久综合狠狠综合久久综合88 | 91精品国自产在线观看| 亚洲第一页在线观看| 99在线热播精品免费| 日韩av图片| 日韩精品卡一| 91久久精品网| 天天久久综合网| 欧美色资源站| 理论片在线不卡免费观看| 国产黄色片视频| 久久精品国产精品亚洲红杏| 91一区二区三区| 91在线免费看| 第一福利永久视频精品 | 亚洲午夜羞羞片| 中文字幕成人在线视频| 操欧美女人视频| 日韩视频在线免费| av大片在线免费观看| 国产激情一区二区三区桃花岛亚洲| 欧美日韩视频在线一区二区观看视频| 麻豆视频在线观看免费| 色94色欧美sute亚洲线路二| 精品人妻人人做人人爽夜夜爽| 欧美色婷婷久久99精品红桃| 97精品视频在线观看| 丰满人妻一区二区| 综合色天天鬼久久鬼色| 日本人69视频| 三区四区不卡| 国产精品偷伦免费视频观看的| 黄色视屏网站在线免费观看| 亚洲第一激情av| 少妇激情一区二区三区视频|