久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot使用Captcha生成驗(yàn)證碼

瀏覽:138日期:2023-03-16 08:42:35
1. 基本結(jié)構(gòu)

使用Captcha生成驗(yàn)證碼, 利用Redis存儲(chǔ)驗(yàn)證碼

Redis中的結(jié)構(gòu)為, Key是32位的UUID, Value為Captcha的4位隨機(jī)字母以及數(shù)字的集合

設(shè)定Redis過(guò)期時(shí)間為1min, 即可實(shí)現(xiàn)過(guò)期驗(yàn)證碼的自動(dòng)失效

2. Kaptcha的依賴

基本的依賴這里不再敘述, 主要說(shuō)一下要導(dǎo)入Captcha的依賴

<!--Kaptcha--><dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency>

所有的依賴如下

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.0</version><relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.wang</groupId> <artifactId>spring_security_framework</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring_security_framework</name> <description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version> </properties> <dependencies><!--Redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--JDBC--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--SpringSecurity--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><!--Thymeleaf--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--Validation--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency><!--SpringBoot Web--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!--Mybatis--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version></dependency><!--SpringSecurity with thymeleaf--><dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId></dependency><!--MySQL connector--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency><!--Lombok--><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency><!--Test--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency><dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope></dependency><!--Druid--><dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.2</version></dependency><!--FastJSON--><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.74</version></dependency><!--log4j--><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency><!--Swagger2--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version></dependency><!--HuTool--><dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.7</version></dependency><!--Kaptcha--><dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency> </dependencies> <build><plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin></plugins> </build></project>3. 配置SpringBoot

配置SpringBoot的配置文件, 這里主要關(guān)注一個(gè)session的過(guò)期時(shí)間

#Portserver: port: 80 servlet: session: timeout: 1spring: application: name: SpringSecurityFramework #dataBase Setting datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/security?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #Druid Setting druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 30000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true #Setting For Druid StatView and Filter filters: stat,wall,log4j max-pool-prepared-statement-per-connection-size: 20 use-global-data-source-stat: true connection-properties: druid.stat.mergeSql=true;druid.stat.slowSql #Redis Setting redis: host: 127.0.0.1 port: 6379 #Thymeleaf thymeleaf: cache: false#Mybatismybatis: type-aliases-package: com.wang.entity mapper-locations: classpath:Mybatis/mapper/*.xml configuration: map-underscore-to-camel-case: true

其余的配置, 如log4j, druid, SpringSecurity, RedisTemplate,這里就不再贅述

4. 配置Captcha

我們可以通過(guò)JAVA的配置類來(lái)配置Captcha生成驗(yàn)證碼的一些規(guī)則

package com.wang.spring_security_framework.config;import com.google.code.kaptcha.impl.DefaultKaptcha;import com.google.code.kaptcha.util.Config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.Properties;//Kaptcha配置@Configurationpublic class KaptchaConfig { @Bean public DefaultKaptcha producer() {//Properties類Properties properties = new Properties();// 圖片邊框properties.setProperty('kaptcha.border', 'yes');// 邊框顏色properties.setProperty('kaptcha.border.color', '105,179,90');// 字體顏色properties.setProperty('kaptcha.textproducer.font.color', 'blue');// 圖片寬properties.setProperty('kaptcha.image.width', '110');// 圖片高properties.setProperty('kaptcha.image.height', '40');// 字體大小properties.setProperty('kaptcha.textproducer.font.size', '30');// session keyproperties.setProperty('kaptcha.session.key', 'code');// 驗(yàn)證碼長(zhǎng)度properties.setProperty('kaptcha.textproducer.char.length', '4');// 字體properties.setProperty('kaptcha.textproducer.font.names', '宋體,楷體,微軟雅黑');//圖片干擾 properties.setProperty('kaptcha.noise.impl','com.google.code.kaptcha.impl.DefaultNoise');//Kaptcha 使用上述配置Config config = new Config(properties);//DefaultKaptcha對(duì)象使用上述配置, 并返回這個(gè)BeanDefaultKaptcha defaultKaptcha = new DefaultKaptcha();defaultKaptcha.setConfig(config);return defaultKaptcha; }}5. 工具類

使用UUID作為key, 同時(shí)考慮到對(duì)驗(yàn)證碼的輸出結(jié)果可能有不同的要求, 這里寫兩個(gè)工具類來(lái)處理它們

UUIDUtil

package com.wang.spring_security_framework.util;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;import java.util.UUID;@Component public class UUIDUtil {/** * 生成32位的隨機(jī)UUID * @return 字符形式的小寫UUID */@Bean public String getUUID32() {return UUID.randomUUID().toString() .replace('-', '').toLowerCase();}}

CaptchaUtil

package com.wang.spring_security_framework.util;import com.google.code.kaptcha.impl.DefaultKaptcha;import com.wang.spring_security_framework.service.CaptchaService;import io.netty.handler.codec.base64.Base64Encoder;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.Map;@Component//Captcha 生成工具public class CaptchaUtil { @Autowired private DefaultKaptcha producer; @Autowired private CaptchaService captchaService; //生成catchCreator的map public Map<String, Object> catchaImgCreator() throws IOException {//生成文字驗(yàn)證碼String text = producer.createText();//生成文字對(duì)應(yīng)的圖片驗(yàn)證碼BufferedImage image = producer.createImage(text);//將圖片寫出ByteArrayOutputStream outputStream = new ByteArrayOutputStream();ImageIO.write(image, 'jpg', outputStream);//對(duì)寫出的字節(jié)數(shù)組進(jìn)行Base64編碼 ==> 用于傳遞8比特字節(jié)碼BASE64Encoder encoder = new BASE64Encoder();//生成tokenMap<String, Object> token = captchaService.createToken(text);token.put('img', encoder.encode(outputStream.toByteArray()));return token; }}6. 接口以及實(shí)現(xiàn)類

1. 接口

package com.wang.spring_security_framework.service;import org.springframework.stereotype.Service;import java.io.IOException;import java.util.Map;public interface CaptchaService { //生成token Map<String, Object> createToken(String captcha); //生成captcha驗(yàn)證碼 Map<String, Object> captchaCreator() throws IOException; //驗(yàn)證輸入的驗(yàn)證碼是否正確 String versifyCaptcha (String token, String inputCode);}

2. 實(shí)現(xiàn)類

package com.wang.spring_security_framework.service.serviceImpl;import com.google.code.kaptcha.impl.DefaultKaptcha;import com.wang.spring_security_framework.service.CaptchaService;import com.wang.spring_security_framework.util.CaptchaUtil;import com.wang.spring_security_framework.util.UUIDUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;import org.springframework.stereotype.Service;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;@Servicepublic class CaptchaServiceImpl implements CaptchaService { @Autowired private RedisTemplate<String, Object> redisTemplate; @Autowired private UUIDUtil uuidUtil; @Autowired private CaptchaUtil captchaUtil; //從SpringBoot的配置文件中取出過(guò)期時(shí)間 @Value('${server.servlet.session.timeout}') private Integer timeout; //UUID為key, 驗(yàn)證碼為Value放在Redis中 @Override public Map<String, Object> createToken(String captcha) {//生成一個(gè)tokenString key = uuidUtil.getUUID32();//生成驗(yàn)證碼對(duì)應(yīng)的token 以token為key 驗(yàn)證碼為value存在redis中ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();valueOperations.set(key, captcha);//設(shè)置驗(yàn)證碼過(guò)期時(shí)間redisTemplate.expire(key, timeout, TimeUnit.MINUTES);Map<String, Object> map = new HashMap<>();map.put('token', key);map.put('expire', timeout);return map; } //生成captcha驗(yàn)證碼 @Override public Map<String, Object> captchaCreator() throws IOException {return captchaUtil.catchaImgCreator(); } //驗(yàn)證輸入的驗(yàn)證碼是否正確 @Override public String versifyCaptcha(String token, String inputCode) {//根據(jù)前端傳回的token在redis中找對(duì)應(yīng)的valueValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();if (redisTemplate.hasKey(token)) { //驗(yàn)證通過(guò), 刪除對(duì)應(yīng)的key if (valueOperations.get(token).equals(inputCode)) {redisTemplate.delete(token);return 'true'; } else {return 'false'; }} else { return 'false';} }} 這里的驗(yàn)證, 只是簡(jiǎn)單的驗(yàn)證了輸入是否能從Redis中匹配, 返回了字符串 真實(shí)的驗(yàn)證中, 我們還要在邏輯中添加用戶名和密碼的考慮 7. Controller

package com.wang.spring_security_framework.controller;import com.wang.spring_security_framework.service.CaptchaService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.io.IOException;import java.util.Map;@RestControllerpublic class LoginController { @Autowired CaptchaService captchaService; @GetMapping('/captcha') public Map<String, Object> captcha() throws IOException {return captchaService.captchaCreator(); } @GetMapping('/login1') public String login(@RequestParam('token') String token, @RequestParam('inputCode') String inputCode) {return captchaService.versifyCaptcha(token, inputCode); }} captcha 用于獲取一個(gè)驗(yàn)證碼 login1 用于接收到前端的請(qǐng)求后驗(yàn)證并返回結(jié)果 login1 這里為了測(cè)試簡(jiǎn)便實(shí)用了GET方法, 而實(shí)際中最好使用POST方法, 這樣安全性更高 8. 前端頁(yè)面的實(shí)現(xiàn)

前端結(jié)構(gòu)如圖, 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的驗(yàn)證碼

SpringBoot使用Captcha生成驗(yàn)證碼

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'> <title>登錄</title> <script src='https://cdn.bootcss.com/jquery/3.4.1/jquery.js'></script></head><body><div> <div><form th:action='@{/login1}' method='get'> <input type='text' placeholder='請(qǐng)輸入用戶名' name='userName'> <br> <input type='password' placeholder='請(qǐng)輸入密碼' name='password'> <br> <input type='text' placeholder='請(qǐng)輸入驗(yàn)證碼' maxlength='4' name='inputCode'> <!--通過(guò)隱藏域傳遞值, 在下面的驗(yàn)證碼點(diǎn)擊事件中, 將值綁定過(guò)來(lái), 這樣就可以獲得最新的驗(yàn)證碼對(duì)應(yīng)的值了!--> <input value='' type='hidden' name='token'> <input type='submit' value='登錄'></form> </div> <div><!-- 當(dāng)用戶鏈接時(shí),void(0)計(jì)算為0,用戶點(diǎn)擊不會(huì)發(fā)生任何效果 --><a href='javascript:void(0);' rel='external nofollow' > <!--this參數(shù), 返回當(dāng)前的DOM元素--> <img src='http://www.gepszalag.com/bcjs/13137.html' alt='更換驗(yàn)證碼' onclick='getVerify(this)'></a> </div></div><script> //獲得img對(duì)象 let imgVerify = $('#imgVerify').get(0); //$(function())等同于$(document).ready(function()) ==> 頁(yè)面加載完畢之后, 才執(zhí)行函數(shù) $(function () {getVerify(imgVerify); }); //onclick時(shí)間綁定的getVerify函數(shù) function getVerify(obj) {$.ajax({ type: 'GET', url: '/captcha', success: function (result) {obj.src = 'data:image/jpeg;base64,' + result.img;$('#token').val(result.token); }}); }</script></body></html> 用一個(gè) a 標(biāo)簽包圍 img 標(biāo)簽, 這樣如果圖片沒(méi)有加載出來(lái)也有一個(gè)超鏈接, 不過(guò)點(diǎn)了以后沒(méi)有效果 (function())等同于(function())等同于(document).ready(function()) ==> 頁(yè)面加載完畢之后, 才執(zhí)行函數(shù), 這里必須要寫這個(gè)函數(shù), 否則第一次加載不會(huì)調(diào)用 onclick 方法, 也就不會(huì)生成驗(yàn)證碼! 我們利用隱藏域?qū)Ⅱ?yàn)證碼的key傳遞到表單中, 我們?cè)?img 的點(diǎn)擊事件對(duì)應(yīng)的函數(shù)的ajax回調(diào)函數(shù)中可以利用jQuery操作DOM, 順帶取出key值放到我們的隱藏域中, 這樣提交的時(shí)候就會(huì)提交 key 和用戶輸入的 value 了示例

SpringBoot使用Captcha生成驗(yàn)證碼

驗(yàn)證通過(guò)

SpringBoot使用Captcha生成驗(yàn)證碼

以上就是SpringBoot使用Captcha生成驗(yàn)證碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot生成驗(yàn)證碼的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产精品乱码久久 | 久久精品视 | 国产精品成人3p一区二区三区 | 久久精品99| 国产人妖在线 | 国产精品成人3p一区二区三区 | 波多野结衣 一区二区 | 91精品久久 | 日日操综合 | 久久久一区二区 | 成人综合社区 | 在线影院av | 久久99深爱久久99精品 | 毛片日韩| 九九免费视频 | 亚洲精品国产第一综合99久久 | 久久国产精品免费一区二区三区 | 欧美日韩国产中文 | av网站免费看 | 中文字幕在线视频免费观看 | 久久久久久久久久久久网站 | 999精品网| 99国产精品 | 国产aⅴ | 国产一级一级特黄女人精品毛片 | 懂色中文一区二区在线播放 | 国产一区在线观看视频 | 日韩精品一区二区三区 | 伊人久久综合 | 在线国产一区二区 | 特级黄一级播放 | 日韩电影免费在线观看中文字幕 | 欧美激情自拍偷拍 | 久久综合九色综合欧美狠狠 | 99久久夜色精品国产网站 | 色精品 | 精品国产一区二区三区久久久 | 成人欧美一区二区三区视频xxx | 欧美喷潮久久久xxxxx | 午夜成人免费影院 | 狠狠综合久久av一区二区老牛 | 狠狠综合久久 | 99亚洲视频 | 成人在线视频播放 | 国产a级大片 | 日韩一区二区精品 | 国产资源在线观看 | www.久久久久久久 | 99免费精品 | 亚洲成人精品在线观看 | 在线观看中文字幕亚洲 | 国产精品三级在线 | 亚洲aⅴ| 亚洲精品久久久久久久久久久 | 91久久极品 | 最近中文字幕在线视频1 | 成人久久18免费 | 欧美成人精品一区二区三区 | 亚洲 欧美 日韩在线 | 99re在线 | 国产伦精品一区二区三区在线 | 亚洲欧洲免费视频 | 91精品国产综合久久福利软件 | 国产亚洲综合一区二区 | 欧美 日韩 中文字幕 | 日本视频一区二区三区 | www.日韩系列 | 中文字幕在线视频精品 | 国产精品一区久久 | 操视频网站 | 91精品国产综合久久久久久丝袜 | 久久99精品国产.久久久久 | 中文字幕本久久精品一区 | 精品香蕉一区二区三区 | 欧美国产在线观看 | 日韩城人网站 | 自拍视频网 | 羞羞的视频网站 | 午夜精品久久久久久久久久久久 | 亚洲成人福利 | 性色av一区二区三区 | 成年视频在线观看福利资源 | 91精品国产九九九久久久亚洲 | 欧美在线播放一区 | 日本精品视频在线观看 | 国产日产精品一区二区三区四区 | www国产成人免费观看视频 | 精品国产乱码久久久久久闺蜜 | 国产成人综合av | 国产高清在线精品一区二区三区 | 免费福利网站 | 99精品欧美一区二区三区 | 国产三级在线观看 | 蜜桃毛片 | 欧美视频在线免费 | 黄的视频网站 | 草草视频在线观看 | 在线观看亚洲视频 | 精品国产影院 | 亚洲第一黄色 | 成人深夜在线观看 | 91av亚洲| 四虎在线视频 | 欧美日韩在线免费 | 99国内精品久久久久久久 | 91一区二区三区 | 成人在线观看免费 | 午夜合集| 久久电影国产 | 不卡一二区 | 国产91在线视频 | 久久亚洲一区二区三区四区五区高 | 久草天堂| 福利久久久 | 久久人操| 日韩欧美国产一区二区 | 国产一区二区免费 | 亚洲精品久久久久久一区二区 | 国产日韩欧美视频 | 亚洲伊人中文字幕 | 国产精品一区二区久久 | 在线日韩视频 | 99综合在线 | 国产区日韩区欧美区 | 特级av| 日韩大尺度电影在线观看 | 97在线免费观看 | 久久99久久99精品免视看婷婷 | 日本天天操 | 天天干天天搞天天射 | 国产高清美女一级a毛片久久 | 在线国产视频 | 伊人网综合在线 | 91中文字幕在线观看 | 久热免费在线观看 | 欧美大片在线看免费观看 | 日韩在线免费 | 亚洲精品1区 | 日韩中文字幕电影在线观看 | 欧美一级网站 | 色黄网站 | 91精品久久久久久综合五月天 | 亚洲成人精品 | 亚洲精品久久 | 日本一区二区不卡视频 | 巴西性猛交xxxx免费看久久久 | 精品人伦一区二区三区蜜桃视频 | 久久99精品久久久 | 色综合天天天天做夜夜夜夜做 | 日日爱视频 | 国产精品永久在线 | 成人在线视频一区 | 精品二区 | 草比网站 | 欧美一二三区在线 | 久久久极品| 最新亚洲黄色网址 | 国产精品视频一区二区三区 | 91污在线| 亚洲免费一区二区 | 一级毛片电影 | 欧美片网站免费 | 欧美综合激情 | 中文字幕在线三区 | 欧美福利二区 | 亚洲成人网在线 | 免费视频一区二区 | 久久66 | 国产一级毛片国语一级 | 毛片a在线 | 我和我的祖国电影在线观看免费版高清 | 午夜激情视频免费 | 一级免费黄视频 | www日韩| 国产欧美日韩综合精品一区二区 | 亚洲一区二区高清视频 | 国产精品一区二区精品 | 国产中文字幕亚洲 | 久久亚洲一区二区三区四区 | 欧美在线观看免费观看视频 | 国产精品毛片久久久久久久 | 亚洲最大av网站 | 国产一区二区三区网站 | 日韩精品极品视频在线 | 一区二区三区在线播放 | 草草视频网站 | 美女一级a毛片免费观看97 | 日韩中文字幕在线免费观看 | 欧美一区二区三区 | 精品国产一区二区三区在线观看 | av免费网站在线观看 | 亚洲国产精品人人爽夜夜爽 | 亚洲精片 | 精品一区二区三区免费毛片 | 欧美日韩综合一区 | 欧美日韩亚洲一区二区 | 国产精品三级在线 | 国产精品久久 | 久久久久久久av | 成人精品视频在线观看 | 青青草日韩 | 成人福利在线观看 | 日韩一区二区三区精品 | 久草新免费 | 精品无人乱码区1区2区3区 | 最新中文字幕视频 | 日韩欧美自拍 | 日韩欧美一区二区三区四区 | 亚洲伦理 | 日韩成人在线观看 | 久久久久久精 | 日本福利视频网 | 免费一区| 国产一区二区三区久久 | av中文字幕网 | 四虎网址 | 看片一区 | 一区二区欧美视频 | www.色综合 | 欧美日韩精品一区 | 中文字幕日韩一区 | 国产精品日产欧美久久久久 | 婷婷毛片 | 欧美日本一区 | 日本免费不卡 | 草久网 | 2018自拍偷拍| 在线观看成人网 | 久久精品99| 欧美精品一区二区三区免费视频 | 国产区区 | 涩涩视频在线看 | 久久久国产精品一区 | 一区亚洲 | 亚洲免费在线观看 | 欧美,日韩,国产精品免费观看 | 欧美精品在欧美一区二区少妇 | 国产又粗又长又硬又猛电影 | 久久精品成人 | 国产精品第一区第27页 | 小川阿佐美88av在线播放 | 国产三级精品三级 | 欧美日韩在线一 | 久久久日韩精品一区二区三区 | 免费av片| 亚洲欧美精品久久 | 日韩免费一区二区 | 色九九| 久久伊人精品视频 | 欧美国产视频一区 | 乳色吐息在线观看 | 国产乱码精品一区二区三区忘忧草 | 精品一区二区三区免费 | 亚洲毛片在线 | 在线观看免费av的网址 | av一区二区三区四区 | 中文字字幕一区二区三区四区五区 | 国产精品一区二区在线观看 | 午夜婷婷丁香 | 国产一区二区三区久久 | 亚洲国产成人久久 | 日本免费网站 | 日日日日干干干干 | 精品欧美黑人一区二区三区 | 欧美日韩视频在线观看一区 | 亚洲不卡在线观看 | 中文字幕在线电影观看 | 91视频在线播放视频 | 成人影院网站ww555久久精品 | 啪啪的网站 | 亚洲国产精品t66y | 操皮视频| 91偷拍精品一区二区三区 | 国产精选一区二区 | 99久久免费看视频 | 成人精品视频99在线观看免费 | 日韩电影一区二区三区 | 91麻豆视频 | 国产精品777一区二区 | 91精品国产综合久久久久久丝袜 | 夜夜视频| 亚洲高清免费 | 成人av网址在线观看 | 99久久99久久精品国产片果冻 | 99在线视频播放 | 欧美视频第一页 | 蜜桃免费一区二区三区 | 男人久久天堂 | 蜜臀91精品国产高清在线观看 | 欧美成人精品激情在线观看 | 日本精品一区二区三区视频 | 精品久久久久一区二区三区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 99久久99久久 | 久久精品一区二区三区四区 | 欧美日韩在线一区二区三区 | 亚洲一区二区三区在线播放 | 天堂精品久久 | www.com欧美| 国产精品亚洲第一区在线暖暖韩国 | 久久久精品一区二区 | 国产成人精品免高潮在线观看 | 亚洲午夜精品片久久www慈禧 | 日韩一区二区在线免费观看 | jizz在线看片| 成人精品视频 | 国产一区二区精品久久 | 九九综合九九 | 99精品欧美一区二区蜜桃免费 | 精品久久久久久久 | 国产在线专区 | 欧美综合一区二区三区 | 国产亚洲一区在线 | 亚洲午夜一区 | 日韩av免费看 | 亚洲区在线| 在线精品亚洲 | 在线观看免费黄色 | 91精品国产日韩91久久久久久 | 欧美日韩黄色一区二区 | 日韩久草 | 99精品免费在线 | а天堂中文最新一区二区三区 | 成人久久18免费网站图片 | 久草视频在线播放 | 九九99 | 国产精品极品美女在线观看免费 | 成人av观看 | 日本在线一区二区 | 美女高潮久久久 | 成人伊人 | 91九色最新 | 日韩三级在线 | 九九精品视频在线观看 | 天天碰天天操 | 亚洲一区二区三区视频 | 超碰官网 | 国产探花在线精品一区二区 | 红色av社区 | 中文字幕精品视频在线观看 | 免费在线色 | 久草福利 | 日韩免费高清视频 | 亚洲一区中文字幕 | 一级电影免费看 | 亚洲www永久成人夜色 | 高清久久 | 亚洲精品一二三四五区 | 欧美精品国产精品 | 日本精品网站 | 91.成人天堂一区 | 中文无码久久精品 | 999视频在线| 午夜私人福利 | 国产精品丝袜一区二区 | 成人在线免费观看视频 | 亚洲天天干 | 国产精品a久久久久 | 日本久久久久久久久久久久 | 欧美成人激情视频 | 91亚洲日本aⅴ精品一区二区 | 欧美久久久久 | 成人高清在线 | 欧美午夜精品久久久久久浪潮 | 夸克满天星在线观看 | 色黄网站 | 国产精品视频一区二区三区不卡 | 超级碰在线视频 | 一区二区在线 | 免费在线a | 久久久久久网站 | 成人一级片视频 | 不卡视频一区二区三区 | 国产高潮呻吟久久渣男片 | 亚洲永久免费视频 | 亚洲综合网站 | 天天射日日操 | 午夜视频网站 | 国产目拍亚洲精品99久久精品 | 日韩h视频 | 国产91久久久| 欧美一区二区三区在线观看 | 91在线看 | 久久久国产精品视频 | 国产精品日本一区二区不卡视频 | 亚洲一区二区三区高清 | 国产成人在线电影 | 毛片网站大全 | 日韩一日 | 亚洲免费视频一区 | 国产日韩在线视频 | 久久精品欧美 | 国产精品亲子伦av一区二区三区 | 国产一区二区三区四区五区加勒比 | 日韩 国产 在线 | 日韩城人免费 | 日产精品久久 | 日韩精品在线免费 | 黄色在线观看网址 | 日韩在线视频在线观看 | 亚洲一区二区在线 | 久久777| 国产精品人人做人人爽 | 亚洲一一在线 | 天天操网| 国产高清一区 | 色婷婷久久 | 青青久在线视频 | 女人毛片a毛片久久人人 | 欧美日韩一区二区三区在线观看 | 亚洲精品在线免费观看视频 | 香蕉av777xxx色综合一区 | 国产男女免费视频 | 成人在线免费电影 | 成人免费观看男女羞羞视频 | 久久69精品久久久久久久电影好 | 中文在线a在线 | 久久精品美女 | 国产精品午夜在线观看 | 成人在线国产 | 亚洲精品久久久久avwww潮水 | 91在线精品视频 | 黄色一级免费观看 | 伊人天堂网 | 日韩精品一区二区三区第95 | 国产综合视频在线播放 | 在线第一页 | 免费中文字幕 | 国产精品久久久久无码av | 中文字幕一区二区三区乱码图片 | 国产资源在线观看 | 亚洲电影一区二区 | 尹人成人 | 成人黄色在线视频 | 嫩草视频入口 | 国产一区二区视频免费 | av激情在线| 日本黄色电影网站 | 国产精品原创巨作av | 亚洲视频 欧美视频 | 91精品一区 | 四季久久免费一区二区三区四区 | 国产在线不卡 | 国产精品久久久久久av公交车 | av午夜 | 久久久久99 | 九九热视频在线 | 人人澡人人射 | 一级黄免费看 | 久久久久久综合 | 日韩高清中文字幕 | 精品亚洲一区二区三区 | 日韩毛片在线视频 | 久久久国产精品入口麻豆 | 欧美日韩亚洲国产综合 | 国产精品人人做人人爽 | 成人在线视频网站 | 99riav国产一区二区三区 | 成人毛片视频网站 | 国产高清精品一区二区三区 | h视频在线免费观看 | 日韩成人免费中文字幕 | 欧美男人的天堂 | 午夜av电影 | 日韩在线免费观看视频 | 欧美成人影院在线 | 伦理一区 | 另类五月 | 国产在线不卡视频 | 亚洲精品久久久久久久久久久 | 久久久久久免费毛片精品 | 日韩欧美国产成人一区二区 | 天堂在线一区二区 | 欧美视频在线观看不卡 | 国产一区二区在线播放 | 综合在线视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产超碰人人爽人人做人人爱 | 男人天堂网站 | 91午夜伦伦电影理论片 | 久草中文在线 | 完全免费av | 亚洲精品成人av | 亚洲av毛片 | 无套内谢孕妇毛片免费看红桃影视 | 国产激情偷乱视频一区二区三区 | 一区二区三区国产视频 | 欧美日韩综合精品 | 精品综合久久 | 天天操天天操 | 高清久久 | 国产精品欧美日韩在线观看 | 欧美精品 在线观看 | 综合久久综合 | 欧美日韩精品一区二区三区在线观看 | 欧美自拍视频在线观看 | caoporn免费在线视频 | 久久久久久久99精品免费观看 | 成人在线免费 | 中文字幕日韩欧美一区二区三区 | 欧美一级黄色片免费看 | 欧美精品一区二区在线观看 | 国产精品亚洲视频 | 高清国产视频 | 亚洲视频区 | 狠狠操电影| 久久99国产精品久久99大师 | 色综合区 | 亚洲一区精品在线 | 国产精品久久久久久久久久久久冷 | 热久久这里只有精品 | 福利网站在线观看 | 国产精品免费看 | 午夜大片网 | 国产中文一区二区三区 | 国产 日韩 欧美 中文 在线播放 | 久久亚洲网 | 欧美日韩精品久久久 | 亚洲一区二区三区四区在线观看 | 国产精品久久免费观看spa | 一级a毛片 | 日韩一区二区三区福利视频 | 人人看人人草 | 超碰在线天天 | 三级在线视频 | 国产三级自拍 | 真人一级毛片 | 亚洲精品久久久久久久久久久 | 国产精品一区二区三区免费视频 | 精品国产精品 | 97色婷婷成人综合在线观看 | 久久精品欧美一区二区三区不卡 | 91麻豆精品国产91久久久更新资源速度超快 | 能直接看的av网站 | 免费成人一级片 | 中文字幕日韩欧美 | 盗摄精品av一区二区三区 | 亚洲一区二区三区在线免费观看 | 精品国产黄a∨片高清在线 99热婷婷 | 在线二区 | 国产四区 | 97在线免费视频 | 久久综合一区 | 国产精品久久久久久久浪潮网站 | 在线中文字幕日韩 | 中文字幕亚洲欧美日韩在线不卡 | 色婷婷综合久久久中字幕精品久久 | 成人国产精品一级毛片视频 | 一级黄片毛片 | 国产美女精品一区二区三区 | 国精产品一区一区三区免费完 | 97国产精品视频人人做人人爱 | 视频一区二区中文字幕日韩 | 日韩欧美在线播放 | 亚洲精品影院 | 成人国产一区二区 | 国产精品免费观看 | 国产98色在线 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲成人高清 | 成人a网| 中国妞xxxhd露脸偷拍视频 | 成人精品三级av在线看 | 日韩亚洲视频 | 美女在线国产 | 国产精品视频免费观看 | 欧美精品一区二区三区蜜桃视频 | 欧美午夜精品久久久久久人妖 | 99在线观看 | 欧美全黄 | 韩国精品视频在线观看 | 国产精品成人国产乱一区 | 不用播放器的毛片 | 欧美在线视频一区 | av观看免费 | 日韩成人在线网站 | 国产综合精品视频 | 美女扒开内裤让男人桶 | 午夜免费一区二区播放 | 九九色综合 | 日韩在线观看网站 | 狠狠躁夜夜躁人人爽天天高潮 | 国产成人精品一区二区三区网站观看 | 老牛影视av一区二区在线观看 | 一级a毛片 | 成人深夜福利 | 欧美寡妇偷汉性猛交 | 中文字幕在线免费视频 | 亚洲一区二区三区在线免费观看 | 欧美成人免费视频 | 久久最新 | 99在线精品视频 | 九九精品视频在线 | 国产欧美综合一区二区三区 | 日日干天天操 | 国产精品久久久久久亚洲影视 | 性开放xxxhd视频 | 日韩在线免费 | 91在线精品一区二区 | 亚洲色欲色欲www | 国产中文字幕一区 | 性大毛片视频 | 人人干人人干人人干 | 日韩成人影视 | 91久久精品日日躁夜夜躁国产 | 成人在线视频一区 | 中文字幕 国产精品 | 亚州中文字幕 | 亚洲日本va中文字幕 | 欧美亚洲综合久久 | 精品国产不卡一区二区三区 | 欧美日韩综合在线 | 天天看天天爽 | 成人免费看 | 欧美在线视频网站 |