久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用React和Spring Boot构建一个简单的CRUD应用

發布時間:2023/12/3 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用React和Spring Boot构建一个简单的CRUD应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“我喜歡編寫身份驗證和授權代碼?!??從來沒有Java開發人員。 厭倦了一次又一次地建立相同的登錄屏幕? 嘗試使用Okta API進行托管身份驗證,授權和多因素身份驗證。

React的設計使創建交互式UI變得輕松自如。 它的狀態管理非常有效,并且僅在數據更改時才更新組件。 組件邏輯是用JavaScript編寫的,這意味著您可以將狀態保持在DOM之外,并創建封裝的組件。

開發人員喜歡CRUD(創建,讀取,更新和刪除)應用程序,因為它們顯示了創建應用程序時需要的許多基本功能。 一旦在應用程序中完成了CRUD的基礎知識,大多數客戶端-服務器管道就完成了,您可以繼續實施必要的業務邏輯。

今天,我將向您展示如何在React中使用Spring Boot創建一個基本的CRUD應用。 您可能還記得我去年為Angular撰寫的一篇類似文章: 使用Angular 5.0和Spring Boot 2.0構建Ba??sic CRUD應用程序 。 該教程使用OAuth 2.0的隱式流程和我們的Okta Angular SDK 。 在本教程中,我將使用OAuth 2.0授權代碼流,并將React應用打包在Spring Boot應用中進行生產。 同時,我將向您展示如何保持React高效的工作流以進行本地開發。

您將需要安裝Java 8 , Node.js 8和Yarn才能完成本教程。 您可以使用npm代替Yarn,但是您需要將Yarn語法轉換為npm。

使用Spring Boot 2.0創建API應用

我經常在世界各地的會議和用戶組中演講。 我最喜歡發言的用戶組是Java用戶組(JUG)。 我從事Java開發人員已有近20年的時間,而且我喜歡Java社區。 我的一個好朋友詹姆斯·沃德(James Ward)表示,進行水罐巡游是他當時最喜歡的開發商倡導者活動之一。 我最近接受了他的建議,并在海外會議上進行了JUG聚會在美國的聚會。

我為什么要告訴你呢? 因為我認為今天創建一個“ JUG Tours”應用很有趣,它允許您創建/編輯/刪除JUG,以及查看即將發生的事件。

首先,導航至start.spring.io并進行以下選擇:

  • 組: com.okta.developer
  • 神器: jugtours
  • 依賴項 : JPA , H2 , Web , Lombok

單擊生成項目 ,下載后展開jugtours.zip ,然后在您喜歡的IDE中打開該項目。

提示:如果您使用的是IntelliJ IDEA或Spring Tool Suite,則在創建新項目時也可以使用Spring Initializr。

添加一個JPA域模型

您需要做的第一件事是創建一個保存數據的域模型。 在高層次上,有一個Group表示酒壺,一個Event有一個多到一的關系Group ,以及User具有與一個一對多的關系Group 。

創建一個src/main/java/com/okta/developer/jugtours/model目錄和其中的Group.java類。

package com.okta.developer.jugtours.model;import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; import lombok.RequiredArgsConstructor;import javax.persistence.*; import java.util.Set;@Data @NoArgsConstructor @RequiredArgsConstructor @Entity @Table(name = "user_group") public class Group {@Id@GeneratedValueprivate Long id;@NonNullprivate String name;private String address;private String city;private String stateOrProvince;private String country;private String postalCode;@ManyToOne(cascade=CascadeType.PERSIST)private User user;@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)private Set<Event> events; }

在同一包中創建一個Event.java類。

package com.okta.developer.jugtours.model;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToMany; import java.time.Instant; import java.util.Set;@Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity public class Event {@Id@GeneratedValueprivate Long id;private Instant date;private String title;private String description;@ManyToManyprivate Set<User> attendees; }

還有一個User.java類。

package com.okta.developer.jugtours.model;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.Entity; import javax.persistence.Id;@Data @NoArgsConstructor @AllArgsConstructor @Entity public class User {@Idprivate String id;private String name;private String email; }

創建一個GroupRepository.java來管理組實體。

package com.okta.developer.jugtours.model;import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface GroupRepository extends JpaRepository<Group, Long> {Group findByName(String name); }

要加載一些默認數據,請在com.okta.developer.jugtours包中創建一個Initializer.java類。

package com.okta.developer.jugtours;import com.okta.developer.jugtours.model.Event; import com.okta.developer.jugtours.model.Group; import com.okta.developer.jugtours.model.GroupRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;import java.time.Instant; import java.util.Collections; import java.util.stream.Stream;@Component class Initializer implements CommandLineRunner {private final GroupRepository repository;public Initializer(GroupRepository repository) {this.repository = repository;}@Overridepublic void run(String... strings) {Stream.of("Denver JUG", "Utah JUG", "Seattle JUG","Richmond JUG").forEach(name ->repository.save(new Group(name)));Group djug = repository.findByName("Denver JUG");Event e = Event.builder().title("Full Stack Reactive").description("Reactive with Spring Boot + React").date(Instant.parse("2018-12-12T18:00:00.000Z")).build();djug.setEvents(Collections.singleton(e));repository.save(djug);repository.findAll().forEach(System.out::println);} }

提示:如果您的IDE Event.builder()問題,則意味著您需要打開注釋處理和/或安裝Lombok插件。 我必須在IntelliJ IDEA中卸載/重新安裝Lombok插件才能正常工作。

如果在添加此代碼后啟動應用程序(使用./mvnw spring-boot:run ),您將看到控制臺中顯示的組和事件列表。

Group(id=1, name=Denver JUG, address=null, city=null, stateOrProvince=null, country=null, postalCode=null, user=null, events=[Event(id=5, date=2018-12-12T18:00:00Z, title=Full Stack Reactive, description=Reactive with Spring Boot + React, attendees=[])]) Group(id=2, name=Utah JUG, address=null, city=null, stateOrProvince=null, country=null, postalCode=null, user=null, events=[]) Group(id=3, name=Seattle JUG, address=null, city=null, stateOrProvince=null, country=null, postalCode=null, user=null, events=[]) Group(id=4, name=Richmond JUG, address=null, city=null, stateOrProvince=null, country=null, postalCode=null, user=null, events=[])

添加一個GroupController.java類(在src/main/java/.../jugtours/web/GroupController.java ), src/main/java/.../jugtours/web/GroupController.java可用于CRUD組。

package com.okta.developer.jugtours.web;import com.okta.developer.jugtours.model.Group; import com.okta.developer.jugtours.model.GroupRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*;import javax.validation.Valid; import java.net.URI; import java.net.URISyntaxException; import java.util.Collection; import java.util.Optional;@RestController @RequestMapping("/api") class GroupController {private final Logger log = LoggerFactory.getLogger(GroupController.class);private GroupRepository groupRepository;public GroupController(GroupRepository groupRepository) {this.groupRepository = groupRepository;}@GetMapping("/groups")Collection<Group> groups() {return groupRepository.findAll();}@GetMapping("/group/{id}")ResponseEntity<?> getGroup(@PathVariable Long id) {Optional<Group> group = groupRepository.findById(id);return group.map(response -> ResponseEntity.ok().body(response)).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));}@PostMapping("/group")ResponseEntity<Group> createGroup(@Valid @RequestBody Group group) throws URISyntaxException {log.info("Request to create group: {}", group);Group result = groupRepository.save(group);return ResponseEntity.created(new URI("/api/group/" + result.getId())).body(result);}@PutMapping("/group/{id}")ResponseEntity<Group> updateGroup(@PathVariable Long id, @Valid @RequestBody Group group) {group.setId(id);log.info("Request to update group: {}", group);Group result = groupRepository.save(group);return ResponseEntity.ok().body(result);}@DeleteMapping("/group/{id}")public ResponseEntity<?> deleteGroup(@PathVariable Long id) {log.info("Request to delete group: {}", id);groupRepository.deleteById(id);return ResponseEntity.ok().build();} }

如果重新啟動服務器應用程序,并使用瀏覽器或命令行客戶端訪問http://localhost:8080/api/groups ,則應看到組列表。

您可以使用以下HTTPie命令創建,讀取,更新和刪除組。

http POST :8080/api/group name='Dublin JUG' city=Dublin country=Ireland http :8080/api/group/6 http PUT :8080/api/group/6 name='Dublin JUG' city=Dublin country=Ireland address=Downtown http DELETE :8080/api/group/6

使用Create React App創建一個React UI

Create React App是一個命令行實用程序,可為您生成React項目。 這是一個方便的工具,因為它還提供了一些命令,這些命令將生成和優化您的項目以進行生產。 它使用webpack在后臺進行構建。 如果您想了解更多關于webpack的信息,我建議使用webpack.academy 。

使用Yarn在jugtours目錄中創建一個新項目。

yarn create react-app app

應用程序創建過程完成后,導航至app目錄并安裝Bootstrap ,對React的cookie支持,React Router和Reactstrap 。

cd app yarn add bootstrap@4.1.2 react-cookie@2.2.0 react-router-dom@4.3.1 reactstrap@6.3.0

您將使用BootstrapCSS和Reactstrap的組件來使UI看起來更好,尤其是在手機上。 如果您想了解有關Reactstrap的更多信息,請參見https://reactstrap.github.io 。 它具有有關其各種組件以及如何使用它們的大量文檔。

將BootstrapCSS文件添加為app/src/index.js的導入文件。

import 'bootstrap/dist/css/bootstrap.min.css';

調用您的Spring Boot API并顯示結果

修改app/src/App.js以使用以下代碼調用/api/groups并在UI中顯示列表。

import React, { Component } from 'react'; import logo from './logo.svg'; import './App.css';class App extends Component {state = {isLoading: true,groups: []};async componentDidMount() {const response = await fetch('/api/groups');const body = await response.json();this.setState({ groups: body, isLoading: false });}render() {const {groups, isLoading} = this.state;if (isLoading) {return <p>Loading...</p>;}return (<div className="App"><header className="App-header"><img src={logo} className="App-logo" alt="logo" /><h1 className="App-title">Welcome to React</h1></header><div className="App-intro"><h2>JUG List</h2>{groups.map(group =><div key={group.id}>{group.name}</div>)}</div></div>);} }export default App;

要將代理從/api代理到http://localhost:8080/api ,請將代理設置添加到app/package.json 。

"scripts": {...}, "proxy": "http://localhost:8080"

要了解有關此功能的更多信息,請在app/README.md搜索“ proxy”。 Create React App隨該文件附帶了各種文檔,這有多酷?

確保Spring Boot正在運行,然后在您的app目錄中運行yarn start 。 您應該看到默認組的列表。

構建一個React GroupList組件

React完全是關于組件的,您不想在主App呈現所有內容,因此請創建app/src/GroupList.js并使用以下JavaScript進行填充。

import React, { Component } from 'react'; import { Button, ButtonGroup, Container, Table } from 'reactstrap'; import AppNavbar from './AppNavbar'; import { Link } from 'react-router-dom';class GroupList extends Component {constructor(props) {super(props);this.state = {groups: [], isLoading: true};this.remove = this.remove.bind(this);}componentDidMount() {this.setState({isLoading: true});fetch('api/groups').then(response => response.json()).then(data => this.setState({groups: data, isLoading: false}));}async remove(id) {await fetch(`/api/group/${id}`, {method: 'DELETE',headers: {'Accept': 'application/json','Content-Type': 'application/json'}}).then(() => {let updatedGroups = [...this.state.groups].filter(i => i.id !== id);this.setState({groups: updatedGroups});});}render() {const {groups, isLoading} = this.state;if (isLoading) {return <p>Loading...</p>;}const groupList = groups.map(group => {const address = `${group.address || ''} ${group.city || ''} ${group.stateOrProvince || ''}`;return <tr key={group.id}><td style={{whiteSpace: 'nowrap'}}>{group.name}</td><td>{address}</td><td>{group.events.map(event => {return <div key={event.id}>{new Intl.DateTimeFormat('en-US', {year: 'numeric',month: 'long',day: '2-digit'}).format(new Date(event.date))}: {event.title}</div>})}</td><td><ButtonGroup><Button size="sm" color="primary" tag={Link} to={"/groups/" + group.id}>Edit</Button><Button size="sm" color="danger" onClick={() => this.remove(group.id)}>Delete</Button></ButtonGroup></td></tr>});return (<div><AppNavbar/><Container fluid><div className="float-right"><Button color="success" tag={Link} to="/groups/new">Add Group</Button></div><h3>My JUG Tour</h3><Table className="mt-4"><thead><tr><th width="20%">Name</th><th width="20%">Location</th><th>Events</th><th width="10%">Actions</th></tr></thead><tbody>{groupList}</tbody></Table></Container></div>);} }export default GroupList;

在同一目錄中創建AppNavbar.js ,以在組件之間建立通用的UI功能。

import React, { Component } from 'react'; import { Collapse, Nav, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap'; import { Link } from 'react-router-dom';export default class AppNavbar extends Component {constructor(props) {super(props);this.state = {isOpen: false};this.toggle = this.toggle.bind(this);}toggle() {this.setState({isOpen: !this.state.isOpen});}render() {return <Navbar color="dark" dark expand="md"><NavbarBrand tag={Link} to="/">Home</NavbarBrand><NavbarToggler onClick={this.toggle}/><Collapse isOpen={this.state.isOpen} navbar><Nav className="ml-auto" navbar><NavItem><NavLinkhref="https://twitter.com/oktadev">@oktadev</NavLink></NavItem><NavItem><NavLink href="https://github.com/oktadeveloper/okta-spring-boot-react-crud-example">GitHub</NavLink></NavItem></Nav></Collapse></Navbar>;} }

創建app/src/Home.js作為應用程序的登錄頁面。

import React, { Component } from 'react'; import './App.css'; import AppNavbar from './AppNavbar'; import { Link } from 'react-router-dom'; import { Button, Container } from 'reactstrap';class Home extends Component {render() {return (<div><AppNavbar/><Container fluid><Button color="link"><Link to="/groups">Manage JUG Tour</Link></Button></Container></div>);} }export default Home;

另外,更改app/src/App.js以使用React Router在組件之間導航。

import React, { Component } from 'react'; import './App.css'; import Home from './Home'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import GroupList from './GroupList';class App extends Component {render() {return (<Router><Switch><Route path='/' exact={true} component={Home}/><Route path='/groups' exact={true} component={GroupList}/></Switch></Router>)} }export default App;

為了使您的UI更加寬敞,請在app/src/App.css容器類中添加一個上邊距。

.container, .container-fluid {margin-top: 20px }

當您進行更改時,您的React應用程序應該會自我更新,并且您應該在http://localhost:3000看到如下屏幕。 點擊Manage JUG Tour ,您將看到默認組的列表。 可以在React應用程序中查看Spring Boot API的數據真是太好了,但是如果您不能編輯它就不好玩了!

添加一個React GroupEdit組件

創建app/src/GroupEdit.js并使用其componentDidMount()從URL中獲取具有ID的組資源。

import React, { Component } from 'react'; import { Link, withRouter } from 'react-router-dom'; import { Button, Container, Form, FormGroup, Input, Label } from 'reactstrap'; import AppNavbar from './AppNavbar';class GroupEdit extends Component {emptyItem = {name: '',address: '',city: '',stateOrProvince: '',country: '',postalCode: ''};constructor(props) {super(props);this.state = {item: this.emptyItem};this.handleChange = this.handleChange.bind(this);this.handleSubmit = this.handleSubmit.bind(this);}async componentDidMount() {if (this.props.match.params.id !== 'new') {const group = await (await fetch(`/api/group/${this.props.match.params.id}`)).json();this.setState({item: group});}}handleChange(event) {const target = event.target;const value = target.value;const name = target.name;let item = {...this.state.item};item[name] = value;this.setState({item});}async handleSubmit(event) {event.preventDefault();const {item} = this.state;await fetch('/api/group', {method: (item.id) ? 'PUT' : 'POST',headers: {'Accept': 'application/json','Content-Type': 'application/json'},body: JSON.stringify(item),});this.props.history.push('/groups');}render() {const {item} = this.state;const title = <h2>{item.id ? 'Edit Group' : 'Add Group'}</h2>;return <div><AppNavbar/><Container>{title}<Form onSubmit={this.handleSubmit}><FormGroup><Label for="name">Name</Label><Input type="text" name="name" id="name" value={item.name || ''}onChange={this.handleChange} autoComplete="name"/></FormGroup><FormGroup><Label for="address">Address</Label><Input type="text" name="address" id="address" value={item.address || ''}onChange={this.handleChange} autoComplete="address-level1"/></FormGroup><FormGroup><Label for="city">City</Label><Input type="text" name="city" id="city" value={item.city || ''}onChange={this.handleChange} autoComplete="address-level1"/></FormGroup><div className="row"><FormGroup className="col-md-4 mb-3"><Label for="stateOrProvince">State/Province</Label><Input type="text" name="stateOrProvince" id="stateOrProvince" value={item.stateOrProvince || ''}onChange={this.handleChange} autoComplete="address-level1"/></FormGroup><FormGroup className="col-md-5 mb-3"><Label for="country">Country</Label><Input type="text" name="country" id="country" value={item.country || ''}onChange={this.handleChange} autoComplete="address-level1"/></FormGroup><FormGroup className="col-md-3 mb-3"><Label for="country">Postal Code</Label><Input type="text" name="postalCode" id="postalCode" value={item.postalCode || ''}onChange={this.handleChange} autoComplete="address-level1"/></FormGroup></div><FormGroup><Button color="primary" type="submit">Save</Button>{' '}<Button color="secondary" tag={Link} to="/groups">Cancel</Button></FormGroup></Form></Container></div>} }export default withRouter(GroupEdit);

底部需要使用withRouter()高階組件來顯示this.props.history因此您可以在添加或保存GroupList后導航回this.props.history 。

修改app/src/App.js以導入GroupEdit并指定其路徑。

import GroupEdit from './GroupEdit';class App extends Component {render() {return (<Router><Switch>...<Route path='/groups/:id' component={GroupEdit}/></Switch></Router>)} }

現在,您應該可以添加和編輯組了!

使用Okta添加身份驗證

構建CRUD應用程序非???#xff0c;但是構建安全的應用程序甚至更酷。 為此,您需要添加身份驗證,以便用戶必須先登錄才能查看/修改組。 為簡化起見,您可以使用Okta的OIDC API。 在Okta,我們的目標是使身份管理比您以往更加輕松,安全和可擴展。 Okta是一項云服務,允許開發人員創建,編輯和安全地存儲用戶帳戶和用戶帳戶數據,并將它們與一個或多個應用程序連接。 我們的API使您能夠:

  • 驗證和授權用戶
  • 存儲有關您的用戶的數據
  • 執行基于密碼的社交登錄
  • 通過多因素身份驗證保護您的應用程序
  • 以及更多! 查看我們的產品文檔

你賣了嗎 注冊一個永久免費的開發者帳戶 ,完成后再回來,這樣您就可以了解有關使用Spring Boot構建安全應用程序的更多信息!

Spring Security + OIDC

Spring Security在其5.0版本中增加了OIDC支持 。 從那時起,他們進行了許多改進并簡化了所需的配置。 我認為探索最新和最有趣的東西很有趣,所以我首先使用Spring的快照存儲庫更新pom.xml ,將Spring Boot和Spring Security升級到夜間構建,并添加必要的Spring Security依賴項來進行OIDC身份驗證。

<?xml version="1.0" encoding="UTF-8"?> <project>...<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.BUILD-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><properties>...<spring-security.version>5.1.0.BUILD-SNAPSHOT</spring-security.version></properties><dependencies>...<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-oauth2-client</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-oauth2-jose</artifactId></dependency></dependencies><build...><pluginRepositories><pluginRepository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories><repositories><repository><id>spring-snapshots</id><name>Spring Snapshot</name><url>http://repo.spring.io/snapshot</url></repository></repositories> </project>

在Okta中創建OIDC應用

登錄到您的1563開發者帳戶(或者注冊 ,如果你沒有一個帳戶)并導航到應用程序 > 添加應用程序 。 單擊“ Web” ,然后單擊“ 下一步” 。 給應用程序起一個您會記住的名稱,并指定http://localhost:8080/login/oauth2/code/okta作為登錄重定向URI。 點擊完成 ,然后點擊編輯以編輯常規設置。 添加http://localhost:3000和http://localhost:8080作為注銷重定向URI,然后點擊保存 。

將默認授權服務器的URI,客戶端ID和客戶端密鑰復制并粘貼到src/main/resources/application.yml 。 創建此文件,然后可以刪除同一目錄中的application.properties文件。

spring:security:oauth2:client:registration:okta:client-id: {clientId}client-secret: {clientSecret}scope: openid email profileprovider:okta:issuer-uri: https://{yourOktaDomain}/oauth2/default

為React和用戶身份配置Spring Security

為了使Spring Security React友好,請在src/main/java/.../jugtours/config創建一個SecurityConfiguration.java文件。 創建config目錄并將該類放入其中。

package com.okta.developer.jugtours.config;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; import org.springframework.security.web.savedrequest.RequestCache; import org.springframework.security.web.savedrequest.SavedRequest;import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Collection; import java.util.List; import java.util.Locale; import java.util.Map;@Configuration public class SecurityConfiguration extends WebSecurityConfigurerAdapter {private final Logger log = LoggerFactory.getLogger(SecurityConfiguration.class);@Overrideprotected void configure(HttpSecurity http) throws Exception {RequestCache requestCache = refererRequestCache();SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler();handler.setRequestCache(requestCache);http.exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/oauth2/authorization/okta")).and().oauth2Login().successHandler(handler).and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and().requestCache().requestCache(requestCache).and().authorizeRequests().antMatchers("/**/*.{js,html,css}").permitAll().antMatchers("/", "/api/user").permitAll().anyRequest().authenticated();}@Beanpublic RequestCache refererRequestCache() {return new RequestCache() {private String savedAttrName = getClass().getName().concat(".SAVED");@Overridepublic void saveRequest(HttpServletRequest request, HttpServletResponse response) {String referrer = request.getHeader("referer");if (referrer != null) {request.getSession().setAttribute(this.savedAttrName, referrerRequest(referrer));}}@Overridepublic SavedRequest getRequest(HttpServletRequest request, HttpServletResponse response) {HttpSession session = request.getSession(false);if (session != null) {return (SavedRequest) session.getAttribute(this.savedAttrName);}return null;}@Overridepublic HttpServletRequest getMatchingRequest(HttpServletRequest request, HttpServletResponse response) {return request;}@Overridepublic void removeRequest(HttpServletRequest request, HttpServletResponse response) {HttpSession session = request.getSession(false);if (session != null) {log.debug("Removing SavedRequest from session if present");session.removeAttribute(this.savedAttrName);}}};}private SavedRequest referrerRequest(final String referrer) {return new SavedRequest() {@Overridepublic String getRedirectUrl() {return referrer;}@Overridepublic List<Cookie> getCookies() {return null;}@Overridepublic String getMethod() {return null;}@Overridepublic List<String> getHeaderValues(String name) {return null;}@Overridepublic Collection<String> getHeaderNames() {return null;}@Overridepublic List<Locale> getLocales() {return null;}@Overridepublic String[] getParameterValues(String name) {return new String[0];}@Overridepublic Map<String, String[]> getParameterMap() {return null;}};} }

這堂課正在進行很多,所以讓我解釋一些事情。 在年初configure()方法,你建立一個新類型,緩存網址標頭(拼錯請求緩存的referer在現實生活中),所以Spring Security可以驗證后回重定向到它。 當您在http://localhost:3000上開發React并希望在登錄后重定向到那里時,基于引用者的請求緩存會派上用場。

@Override protected void configure(HttpSecurity http) throws Exception {RequestCache requestCache = refererRequestCache();SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler();handler.setRequestCache(requestCache);http.exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/oauth2/authorization/okta")).and().oauth2Login().successHandler(handler).and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and().requestCache().requestCache(requestCache).and().authorizeRequests().antMatchers("/**/*.{js,html,css}").permitAll().antMatchers("/", "/api/user").permitAll().anyRequest().authenticated(); }

authenticationEntryPoint()行使Spring Security自動重定向到Okta。 在Spring Security 5.1.0.RELEASE中,當您僅配置一個OIDC提供程序時,將不需要此行。 它會自動重定向。

使用CookieCsrfTokenRepository.withHttpOnlyFalse()配置CSRF(跨站點請求偽造)保護意味著XSRF-TOKEN cookie將不會被標記為僅HTTP,因此React可以讀取它并在嘗試操作數據時將其發送回去。

antMatchers行定義了匿名用戶可以使用哪些URL。 您將很快進行配置,以便由Spring Boot應用程序服務您的React應用程序,因此允許使用Web文件和“ /”的原因。 您可能會注意到也有一個公開的/api/user路徑。 創建src/main/java/.../jugtours/web/UserController.java并使用以下代碼填充它。 React將使用此API來1)找出用戶是否已通過身份驗證,以及2)執行全局注銷。

package com.okta.developer.jugtours.web;import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.oauth2.core.oidc.OidcIdToken; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map;@RestController public class UserController {@Value("${spring.security.oauth2.client.provider.okta.issuer-uri}")String issuerUri;@GetMapping("/api/user")public ResponseEntity<?> getUser(@AuthenticationPrincipal OAuth2User user) {if (user == null) {return new ResponseEntity<>("", HttpStatus.OK);} else {return ResponseEntity.ok().body(user.getAttributes());}}@PostMapping("/api/logout")public ResponseEntity<?> logout(HttpServletRequest request,@AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken) {// send logout URL to client so they can initiate logout - doesn't work from the server side// Make it easier: https://github.com/spring-projects/spring-security/issues/5540String logoutUrl = issuerUri + "/v1/logout";Map<String, String> logoutDetails = new HashMap<>();logoutDetails.put("logoutUrl", logoutUrl);logoutDetails.put("idToken", idToken.getTokenValue());request.getSession(false).invalidate();return ResponseEntity.ok().body(logoutDetails);} }

您還需要創建組時,這樣就可以通過你的壺之旅篩選添加用戶信息。 在與GroupRepository.java相同的目錄中添加UserRepository.java 。

package com.okta.developer.jugtours.model;import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, String> { }

將新的findAllByUserId(String id)方法添加到GroupRepository.java 。

List<Group> findAllByUserId(String id);

然后將UserRepository注入GroupController.java并在添加新組時使用它來創建(或獲取現有用戶)。 在那里,請修改groups()方法以按用戶過濾。

package com.okta.developer.jugtours.web;import com.okta.developer.jugtours.model.Group; import com.okta.developer.jugtours.model.GroupRepository; import com.okta.developer.jugtours.model.User; import com.okta.developer.jugtours.model.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.web.bind.annotation.*;import javax.validation.Valid; import java.net.URI; import java.net.URISyntaxException; import java.security.Principal; import java.util.Collection; import java.util.Map; import java.util.Optional;@RestController @RequestMapping("/api") class GroupController {private final Logger log = LoggerFactory.getLogger(GroupController.class);private GroupRepository groupRepository;private UserRepository userRepository;public GroupController(GroupRepository groupRepository, UserRepository userRepository) {this.groupRepository = groupRepository;this.userRepository = userRepository;}@GetMapping("/groups")Collection<Group> groups(Principal principal) {return groupRepository.findAllByUserId(principal.getName());}@GetMapping("/group/{id}")ResponseEntity<?> getGroup(@PathVariable Long id) {Optional<Group> group = groupRepository.findById(id);return group.map(response -> ResponseEntity.ok().body(response)).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));}@PostMapping("/group")ResponseEntity<Group> createGroup(@Valid @RequestBody Group group,@AuthenticationPrincipal OAuth2User principal) throws URISyntaxException {log.info("Request to create group: {}", group);Map<String, Object> details = principal.getAttributes();String userId = details.get("sub").toString();// check to see if user already existsOptional<User> user = userRepository.findById(userId);group.setUser(user.orElse(new User(userId,details.get("name").toString(), details.get("email").toString())));Group result = groupRepository.save(group);return ResponseEntity.created(new URI("/api/group/" + result.getId())).body(result);}@PutMapping("/group")ResponseEntity<Group> updateGroup(@Valid @RequestBody Group group) {log.info("Request to update group: {}", group);Group result = groupRepository.save(group);return ResponseEntity.ok().body(result);}@DeleteMapping("/group/{id}")public ResponseEntity<?> deleteGroup(@PathVariable Long id) {log.info("Request to delete group: {}", id);groupRepository.deleteById(id);return ResponseEntity.ok().build();} }

為了放大更改,它們在groups()和createGroup()方法中。 Spring JPA會為您創建findAllByUserId()方法/查詢,并且userRepository.findById()使用Java 8的Optional ,這是一個很好的選擇 。

@GetMapping("/groups") Collection<Group> groups(Principal principal) {return groupRepository.findAllByUserId(principal.getName()); }@PostMapping("/group") ResponseEntity<Group> createGroup(@Valid @RequestBody Group group,@AuthenticationPrincipal OAuth2User principal) throws URISyntaxException {log.info("Request to create group: {}", group);Map<String, Object> details = principal.getAttributes();String userId = details.get("sub").toString();// check to see if user already existsOptional<User> user = userRepository.findById(userId);group.setUser(user.orElse(new User(userId,details.get("name").toString(), details.get("email").toString())));Group result = groupRepository.save(group);return ResponseEntity.created(new URI("/api/group/" + result.getId())).body(result); }

修改React Handle CSRF并識別身份

您需要對React組件進行一些更改,以使它們能夠識別身份。 您要做的第一件事是修改App.js以將所有內容包裝在CookieProvider 。 該組件允許您讀取CSRF cookie并將其作為標題發送回。

import { CookiesProvider } from 'react-cookie';class App extends Component {render() {return (<CookiesProvider><Router...></CookiesProvider>)} }

修改app/src/Home.js以調用/api/user來查看用戶是否已登錄。如果沒有Login ,請顯示“ Login按鈕。

import React, { Component } from 'react'; import './App.css'; import AppNavbar from './AppNavbar'; import { Link } from 'react-router-dom'; import { Button, Container } from 'reactstrap'; import { withCookies } from 'react-cookie';class Home extends Component {state = {isLoading: true,isAuthenticated: false,user: undefined};constructor(props) {super(props);const {cookies} = props;this.state.csrfToken = cookies.get('XSRF-TOKEN');this.login = this.login.bind(this);this.logout = this.logout.bind(this);}async componentDidMount() {const response = await fetch('/api/user', {credentials: 'include'});const body = await response.text();if (body === '') {this.setState(({isAuthenticated: false}))} else {this.setState({isAuthenticated: true, user: JSON.parse(body)})}}login() {let port = (window.location.port ? ':' + window.location.port : '');if (port === ':3000') {port = ':8080';}window.location.href = '//' + window.location.hostname + port + '/private';}logout() {console.log('logging out...');fetch('/api/logout', {method: 'POST', credentials: 'include',headers: {'X-XSRF-TOKEN': this.state.csrfToken}}).then(res => res.json()).then(response => {window.location.href = response.logoutUrl + "?id_token_hint=" +response.idToken + "&post_logout_redirect_uri=" + window.location.origin;});}render() {const message = this.state.user ?<h2>Welcome, {this.state.user.name}!</h2> :<p>Please log in to manage your JUG Tour.</p>;const button = this.state.isAuthenticated ?<div><Button color="link"><Link to="/groups">Manage JUG Tour</Link></Button><br/><Button color="link" onClick={this.logout}>Logout</Button></div> :<Button color="primary" onClick={this.login}>Login</Button>;return (<div><AppNavbar/><Container fluid>{message}{button}</Container></div>);} }export default withCookies(Home);

您應該在此組件中注意一些事項:

  • withCookies()將Home組件包裝在底部,以使其可以訪問cookie。 然后,您可以在構造const {cookies} = props中使用const {cookies} = props ,并使用cookies.get('XSRF-TOKEN')獲取cookie。
  • 使用fetch() ,需要包括{credentials: 'include'}來傳輸cookie。 如果不包含此選項,則將獲得“ 403禁止訪問”。
  • Spring Security的CSRF cookie的名稱與您需要發回的標頭的名稱不同。 cookie名稱是XSRF-TOKEN ,而標題名稱是X-XSRF-TOKEN 。
  • 更新app/src/GroupList.js以進行類似更改。 好消息是您不需要對render()方法進行任何更改。

    import { Link, withRouter } from 'react-router-dom'; import { instanceOf } from 'prop-types'; import { withCookies, Cookies } from 'react-cookie';class GroupList extends Component {static propTypes = {cookies: instanceOf(Cookies).isRequired};constructor(props) {super(props);const {cookies} = props;this.state = {groups: [], csrfToken: cookies.get('XSRF-TOKEN'), isLoading: true};this.remove = this.remove.bind(this);}componentDidMount() {this.setState({isLoading: true});fetch('api/groups', {credentials: 'include'}).then(response => response.json()).then(data => this.setState({groups: data, isLoading: false})).catch(() => this.props.history.push('/'))}async remove(id) {await fetch(`/api/group/${id}`, {method: 'DELETE',headers: {'X-XSRF-TOKEN': this.state.csrfToken,'Accept': 'application/json','Content-Type': 'application/json'},credentials: 'include'}).then(() => {let updatedGroups = [...this.state.groups].filter(i => i.id !== id);this.setState({groups: updatedGroups});});}render() {...} }export default withCookies(withRouter(GroupList));

    也更新GroupEdit.js 。

    import { instanceOf } from 'prop-types'; import { Cookies, withCookies } from 'react-cookie';class GroupEdit extends Component {static propTypes = {cookies: instanceOf(Cookies).isRequired};emptyItem = {name: '',address: '',city: '',stateOrProvince: '',country: '',postalCode: ''};constructor(props) {super(props);const {cookies} = props;this.state = {item: this.emptyItem,csrfToken: cookies.get('XSRF-TOKEN')};this.handleChange = this.handleChange.bind(this);this.handleSubmit = this.handleSubmit.bind(this);}async componentDidMount() {if (this.props.match.params.id !== 'new') {try {const group = await (await fetch(`/api/group/${this.props.match.params.id}`, {credentials: 'include'})).json();this.setState({item: group});} catch (error) {this.props.history.push('/');}}}handleChange(event) {const target = event.target;const value = target.value;const name = target.name;let item = {...this.state.item};item[name] = value;this.setState({item});}async handleSubmit(event) {event.preventDefault();const {item, csrfToken} = this.state;await fetch('/api/group', {method: (item.id) ? 'PUT' : 'POST',headers: {'X-XSRF-TOKEN': csrfToken,'Accept': 'application/json','Content-Type': 'application/json'},body: JSON.stringify(item),credentials: 'include'});this.props.history.push('/groups');}render() {...} }export default withCookies(withRouter(GroupEdit));

    完成所有這些更改之后,您應該能夠重新啟動Spring Boot和React,并見證計劃自己的JUG Tour的榮耀!

    配置Maven以使用Spring Boot構建和打包React

    要使用Maven構建和打包React應用,可以使用frontend-maven-plugin和Maven的配置文件將其激活。 將版本的屬性和<profiles>部分添加到pom.xml 。

    <properties>...<frontend-maven-plugin.version>1.6</frontend-maven-plugin.version><node.version>v10.6.0</node.version><yarn.version>v1.8.0</yarn.version> </properties><profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><spring.profiles.active>dev</spring.profiles.active></properties></profile><profile><id>prod</id><build><plugins><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-resources</id><phase>process-classes</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${basedir}/target/classes/static</outputDirectory><resources><resource><directory>app/build</directory></resource></resources></configuration></execution></executions></plugin><plugin><groupId>com.github.eirslett</groupId><artifactId>frontend-maven-plugin</artifactId><version>${frontend-maven-plugin.version}</version><configuration><workingDirectory>app</workingDirectory></configuration><executions><execution><id>install node</id><goals><goal>install-node-and-yarn</goal></goals><configuration><nodeVersion>${node.version}</nodeVersion><yarnVersion>${yarn.version}</yarnVersion></configuration></execution><execution><id>yarn install</id><goals><goal>yarn</goal></goals><phase>generate-resources</phase></execution><execution><id>yarn test</id><goals><goal>yarn</goal></goals><phase>test</phase><configuration><arguments>test</arguments></configuration></execution><execution><id>yarn build</id><goals><goal>yarn</goal></goals><phase>compile</phase><configuration><arguments>build</arguments></configuration></execution></executions></plugin></plugins></build><properties><spring.profiles.active>prod</spring.profiles.active></properties></profile> </profiles>

    在使用時,將活動配置文件設置添加到src/main/resources/application.yml :

    spring:profiles:active: @spring.profiles.active@security:

    添加./mvnw spring-boot:run -Pprod之后,您應該可以運行./mvnw spring-boot:run -Pprod并且您的應用程序可以看到您的應用程序在http://localhost:8080 。

    注意:如果您無法登錄,則可以嘗試在隱身窗口中打開您的應用程序。

    Spring Security的OAuth 2.0與OIDC支持

    在撰寫這篇文章時,我與Rob Winch (Spring Security Lead)合作,以確保我有效地使用了Spring Security。 我開始使用Spring Security的OAuth 2.0支持及其@EnableOAuth2Sso批注。 Rob鼓勵我改用Spring Security的OIDC支持,這對使一切正常發揮了作用。

    隨著Spring Boot 2.1和Spring Security 5.1的里程碑和發行版的發布,我將更新此帖子以刪除不再需要的代碼。

    了解有關Spring Boot和React的更多信息

    我希望您喜歡本教程,了解如何使用React,Spring Boot和Spring Security進行CRUD。 您可以看到Spring Security的OIDC支持非常強大,并且不需要大量配置。 添加CSRF保護并將Spring Boot + React應用打包為單個工件也很酷!

    您可以在GitHub上的https://github.com/oktadeveloper/okta-spring-boot-react-crud-example上找到本教程中創建的示例。

    我們還編寫了其他一些很棒的Spring Boot和React教程,如果您有興趣的話可以查看它們。

    • 使用Spring Boot和React進行Bootiful開發
    • 構建一個React Native應用程序并使用OAuth 2.0進行身份驗證
    • 使用Jenkins X和Kubernetes將CI / CD添加到您的Spring Boot應用程序
    • 15分鐘內通過用戶身份驗證構建React應用程序

    如有任何疑問,請隨時在下面發表評論,或在我們的Okta開發者論壇上向我們提問。 如果您想查看更多類似的教程,請在Twitter上關注我們!

    “我喜歡編寫身份驗證和授權代碼?!??從來沒有Java開發人員。 厭倦了一次又一次地建立相同的登錄屏幕? 嘗試使用Okta API進行托管身份驗證,授權和多因素身份驗證。

    ``使用React和Spring Boot構建簡單的CRUD應用程序''最初于2018年7月19日發布在Okta開發者博客上。

    翻譯自: https://www.javacodegeeks.com/2018/07/react-spring-boot-build-crud-app.html

    總結

    以上是生活随笔為你收集整理的使用React和Spring Boot构建一个简单的CRUD应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久人人爽人人爽人人片ⅴ | 日韩亚洲欧美精品综合 | 日欧一片内射va在线影院 | 中文字幕久久久久人妻 | 国产女主播喷水视频在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产精品美女久久久久av爽李琼 | 中文字幕精品av一区二区五区 | 国产一区二区三区四区五区加勒比 | 国产午夜视频在线观看 | 人人澡人人妻人人爽人人蜜桃 | 国产9 9在线 | 中文 | 国产猛烈高潮尖叫视频免费 | 久久久精品欧美一区二区免费 | 5858s亚洲色大成网站www | 国产婷婷色一区二区三区在线 | 在线a亚洲视频播放在线观看 | 欧美精品免费观看二区 | 欧美丰满熟妇xxxx | 国产后入清纯学生妹 | 国产办公室秘书无码精品99 | 亚洲午夜福利在线观看 | 日韩欧美成人免费观看 | 国产福利视频一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 国产乱人偷精品人妻a片 | 午夜熟女插插xx免费视频 | 97人妻精品一区二区三区 | 高清国产亚洲精品自在久久 | 国产人成高清在线视频99最全资源 | 国产真人无遮挡作爱免费视频 | 婷婷综合久久中文字幕蜜桃三电影 | 377p欧洲日本亚洲大胆 | 中文字幕日韩精品一区二区三区 | 夫妻免费无码v看片 | 久久久中文久久久无码 | 丰满妇女强制高潮18xxxx | 人妻少妇精品视频专区 | 久久精品国产亚洲精品 | 亚洲欧洲日本无在线码 | 亚洲爆乳精品无码一区二区三区 | 亚洲色偷偷偷综合网 | 人人妻人人澡人人爽欧美精品 | 熟妇人妻无乱码中文字幕 | 少妇性俱乐部纵欲狂欢电影 | 国产香蕉尹人视频在线 | 中文字幕无码免费久久99 | 色噜噜亚洲男人的天堂 | 强开小婷嫩苞又嫩又紧视频 | 亚洲 a v无 码免 费 成 人 a v | 亚洲精品美女久久久久久久 | 国产农村妇女高潮大叫 | 乱码av麻豆丝袜熟女系列 | 国产精品a成v人在线播放 | 无码人中文字幕 | 欧美性猛交xxxx富婆 | 国产乱码精品一品二品 | 色综合天天综合狠狠爱 | 人妻少妇精品视频专区 | 水蜜桃亚洲一二三四在线 | 一本一道久久综合久久 | 亚洲国产精品无码一区二区三区 | 在线亚洲高清揄拍自拍一品区 | 乱人伦人妻中文字幕无码久久网 | 在线播放亚洲第一字幕 | 天天综合网天天综合色 | 98国产精品综合一区二区三区 | 理论片87福利理论电影 | 亚洲精品中文字幕乱码 | 国产一区二区三区影院 | 国产香蕉尹人综合在线观看 | 久久五月精品中文字幕 | 男人和女人高潮免费网站 | 亚洲成av人片天堂网无码】 | 国产亚洲精品久久久久久久 | 天天摸天天碰天天添 | 妺妺窝人体色www在线小说 | 扒开双腿疯狂进出爽爽爽视频 | 久久国内精品自在自线 | 亚洲国产午夜精品理论片 | 人人妻人人澡人人爽精品欧美 | 99精品视频在线观看免费 | 亚洲高清偷拍一区二区三区 | 日韩av激情在线观看 | 丝袜美腿亚洲一区二区 | 99视频精品全部免费免费观看 | 2020最新国产自产精品 | 亚洲欧美日韩国产精品一区二区 | 亚洲日韩av一区二区三区中文 | 亚洲va中文字幕无码久久不卡 | 亚洲va欧美va天堂v国产综合 | 国产av久久久久精东av | 亚洲欧美综合区丁香五月小说 | 99久久精品午夜一区二区 | 一本久道久久综合狠狠爱 | 国产精品国产三级国产专播 | 精品久久久无码人妻字幂 | 任你躁国产自任一区二区三区 | 内射后入在线观看一区 | 日产精品99久久久久久 | 欧美黑人性暴力猛交喷水 | a国产一区二区免费入口 | 麻豆精产国品 | 欧美大屁股xxxxhd黑色 | 奇米影视7777久久精品人人爽 | 国产日产欧产精品精品app | 国产亚洲美女精品久久久2020 | 领导边摸边吃奶边做爽在线观看 | 成人亚洲精品久久久久软件 | 一本加勒比波多野结衣 | 任你躁国产自任一区二区三区 | 色五月丁香五月综合五月 | 欧美野外疯狂做受xxxx高潮 | 成人精品一区二区三区中文字幕 | 超碰97人人做人人爱少妇 | 亚洲男人av香蕉爽爽爽爽 | 免费播放一区二区三区 | 玩弄少妇高潮ⅹxxxyw | 亚洲一区二区三区含羞草 | 国精产品一区二区三区 | 亚洲色大成网站www | 亚洲中文字幕乱码av波多ji | 国产亚洲精品久久久ai换 | 日本大乳高潮视频在线观看 | 亚洲日韩av一区二区三区四区 | 丰满少妇高潮惨叫视频 | 狠狠噜狠狠狠狠丁香五月 | 精品日本一区二区三区在线观看 | 亚洲精品久久久久中文第一幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 午夜性刺激在线视频免费 | 欧美性生交xxxxx久久久 | 狠狠躁日日躁夜夜躁2020 | 内射后入在线观看一区 | 激情内射亚州一区二区三区爱妻 | 国产97在线 | 亚洲 | 欧美自拍另类欧美综合图片区 | 无码人妻av免费一区二区三区 | 久久综合九色综合欧美狠狠 | 中文无码成人免费视频在线观看 | 成年美女黄网站色大免费视频 | 国产午夜视频在线观看 | 国产精品美女久久久 | 精品久久8x国产免费观看 | 最新国产麻豆aⅴ精品无码 | 亚洲精品成人福利网站 | 国产精品久久精品三级 | 欧洲欧美人成视频在线 | 国产黑色丝袜在线播放 | 狠狠色丁香久久婷婷综合五月 | 亚洲色偷偷男人的天堂 | 性欧美熟妇videofreesex | 亚洲色在线无码国产精品不卡 | 国产精品久久久久无码av色戒 | 精品午夜福利在线观看 | 人妻插b视频一区二区三区 | 成人欧美一区二区三区黑人 | 7777奇米四色成人眼影 | 好男人社区资源 | 日韩精品无码一本二本三本色 | 国产成人无码一二三区视频 | 在线看片无码永久免费视频 | 精品国产一区二区三区av 性色 | 日韩欧美中文字幕在线三区 | 国产深夜福利视频在线 | 88国产精品欧美一区二区三区 | 国产精品第一区揄拍无码 | 成 人 网 站国产免费观看 | 亚洲精品美女久久久久久久 | 精品国产乱码久久久久乱码 | 露脸叫床粗话东北少妇 | 色一情一乱一伦一区二区三欧美 | 成年美女黄网站色大免费全看 | 少妇人妻偷人精品无码视频 | 国产午夜福利100集发布 | 日韩精品无码免费一区二区三区 | 午夜精品一区二区三区的区别 | 国产亚av手机在线观看 | 色婷婷久久一区二区三区麻豆 | 人人爽人人爽人人片av亚洲 | 人人澡人摸人人添 | 国产精品丝袜黑色高跟鞋 | 亚洲码国产精品高潮在线 | 亚洲国产午夜精品理论片 | 久久无码人妻影院 | 日本精品高清一区二区 | 18禁止看的免费污网站 | 久久综合香蕉国产蜜臀av | 婷婷五月综合缴情在线视频 | 国产人妖乱国产精品人妖 | 久久人人爽人人爽人人片av高清 | 亚洲国产精品久久人人爱 | 国产精品.xx视频.xxtv | 欧美日本精品一区二区三区 | www一区二区www免费 | 国内精品人妻无码久久久影院蜜桃 | 日韩精品a片一区二区三区妖精 | 日日碰狠狠躁久久躁蜜桃 | 亚洲码国产精品高潮在线 | 撕开奶罩揉吮奶头视频 | 麻豆国产丝袜白领秘书在线观看 | 亚洲精品综合一区二区三区在线 | 少妇高潮喷潮久久久影院 | 六十路熟妇乱子伦 | 人妻尝试又大又粗久久 | 无套内谢的新婚少妇国语播放 | 成人免费无码大片a毛片 | 色综合久久88色综合天天 | 未满小14洗澡无码视频网站 | 国产午夜无码精品免费看 | 大肉大捧一进一出视频出来呀 | 亚洲乱码中文字幕在线 | 国产乱人无码伦av在线a | 亚洲va欧美va天堂v国产综合 | 日韩精品乱码av一区二区 | 国产偷国产偷精品高清尤物 | 亚洲人成网站在线播放942 | 天海翼激烈高潮到腰振不止 | 久在线观看福利视频 | 亚洲中文字幕无码一久久区 | 亚洲国精产品一二二线 | 精品国产一区av天美传媒 | 国产一区二区三区四区五区加勒比 | 亚洲人成网站色7799 | 粉嫩少妇内射浓精videos | 精品夜夜澡人妻无码av蜜桃 | 国产精品.xx视频.xxtv | 伊人久久大香线蕉av一区二区 | 成熟妇人a片免费看网站 | 亚洲中文字幕在线观看 | 亚洲色大成网站www国产 | 日本在线高清不卡免费播放 | 久久五月精品中文字幕 | 亚洲国产av美女网站 | 久久久久久九九精品久 | 精品人妻人人做人人爽夜夜爽 | 国产精品美女久久久久av爽李琼 | 欧美肥老太牲交大战 | 中文精品久久久久人妻不卡 | 国产精品鲁鲁鲁 | 无遮挡国产高潮视频免费观看 | 久久综合九色综合97网 | 午夜福利一区二区三区在线观看 | 1000部啪啪未满十八勿入下载 | 在线а√天堂中文官网 | 久久久久久久人妻无码中文字幕爆 | 日本饥渴人妻欲求不满 | 日韩人妻无码一区二区三区久久99 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品福利视频导航 | 国产精品.xx视频.xxtv | 人人妻人人澡人人爽精品欧美 | 又大又硬又黄的免费视频 | 亚洲成色www久久网站 | 乱人伦中文视频在线观看 | 亚洲欧洲日本综合aⅴ在线 | 女人被男人爽到呻吟的视频 | 狠狠色丁香久久婷婷综合五月 | 亚洲热妇无码av在线播放 | 精品国产乱码久久久久乱码 | 最新国产乱人伦偷精品免费网站 | 精品久久8x国产免费观看 | 激情爆乳一区二区三区 | 欧美精品一区二区精品久久 | 国产亚洲精品久久久久久大师 | 久久久无码中文字幕久... | 精品国精品国产自在久国产87 | 国产精品久久国产精品99 | 欧美三级a做爰在线观看 | 狠狠亚洲超碰狼人久久 | 日本一区二区更新不卡 | 女人高潮内射99精品 | 免费无码肉片在线观看 | 亚洲大尺度无码无码专区 | 久久国产36精品色熟妇 | 人人妻人人澡人人爽精品欧美 | 黑人玩弄人妻中文在线 | 少妇性l交大片 | 国产激情精品一区二区三区 | 少妇激情av一区二区 | 激情五月综合色婷婷一区二区 | 在线欧美精品一区二区三区 | 亚洲色偷偷男人的天堂 | 丝袜人妻一区二区三区 | 性色欲情网站iwww九文堂 | 国产精品高潮呻吟av久久 | 乱人伦人妻中文字幕无码 | 午夜福利一区二区三区在线观看 | 婷婷五月综合缴情在线视频 | 98国产精品综合一区二区三区 | 图片小说视频一区二区 | 亚洲乱亚洲乱妇50p | 1000部夫妻午夜免费 | 久久久精品456亚洲影院 | 国产偷自视频区视频 | 最近的中文字幕在线看视频 | 国产精品亚洲专区无码不卡 | 丰满少妇人妻久久久久久 | 99在线 | 亚洲 | √天堂中文官网8在线 | 熟妇女人妻丰满少妇中文字幕 | 成熟人妻av无码专区 | 亚洲国产精品毛片av不卡在线 | 免费无码午夜福利片69 | 亚洲精品综合一区二区三区在线 | 亚洲欧美国产精品久久 | 亚洲另类伦春色综合小说 | 亚洲无人区午夜福利码高清完整版 | 国产sm调教视频在线观看 | 久久久久久av无码免费看大片 | 伊人久久大香线蕉亚洲 | 日本又色又爽又黄的a片18禁 | 亚洲精品美女久久久久久久 | 日韩亚洲欧美精品综合 | 暴力强奷在线播放无码 | 国产精品亚洲五月天高清 | 大地资源中文第3页 | 美女极度色诱视频国产 | 国产av久久久久精东av | 色综合视频一区二区三区 | 无遮挡国产高潮视频免费观看 | 久久综合狠狠综合久久综合88 | 亚洲精品国偷拍自产在线观看蜜桃 | 日本护士毛茸茸高潮 | 久久精品国产一区二区三区 | 国内老熟妇对白xxxxhd | 日本熟妇人妻xxxxx人hd | 国产午夜亚洲精品不卡下载 | 日韩精品无码免费一区二区三区 | 亚洲a无码综合a国产av中文 | 强开小婷嫩苞又嫩又紧视频 | 国产精品99爱免费视频 | 好屌草这里只有精品 | 少妇被黑人到高潮喷出白浆 | 欧美日韩一区二区综合 | 国产精品高潮呻吟av久久 | 日本一本二本三区免费 | 国产sm调教视频在线观看 | 俺去俺来也在线www色官网 | 国内精品久久久久久中文字幕 | 国产欧美精品一区二区三区 | 午夜男女很黄的视频 | 人人妻人人澡人人爽欧美一区九九 | 午夜理论片yy44880影院 | 欧美 日韩 亚洲 在线 | 无人区乱码一区二区三区 | 亚洲欧美色中文字幕在线 | 大地资源中文第3页 | 日韩 欧美 动漫 国产 制服 | 成人无码视频免费播放 | 日韩视频 中文字幕 视频一区 | 午夜福利试看120秒体验区 | 性生交片免费无码看人 | 中文字幕人妻无码一夲道 | 免费观看的无遮挡av | 老熟妇乱子伦牲交视频 | 色综合久久网 | 国产精品视频免费播放 | 国产精品a成v人在线播放 | 丰满人妻被黑人猛烈进入 | 亚洲中文字幕成人无码 | 国产莉萝无码av在线播放 | 国内精品一区二区三区不卡 | 久久精品成人欧美大片 | 99精品久久毛片a片 | 在线播放无码字幕亚洲 | 亚洲自偷自偷在线制服 | 高潮毛片无遮挡高清免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 野外少妇愉情中文字幕 | 中文亚洲成a人片在线观看 | 六月丁香婷婷色狠狠久久 | 日本一区二区更新不卡 | 亚洲男女内射在线播放 | 亚洲国产一区二区三区在线观看 | 国产精品嫩草久久久久 | aⅴ在线视频男人的天堂 | 国产电影无码午夜在线播放 | 久久天天躁狠狠躁夜夜免费观看 | 少妇性俱乐部纵欲狂欢电影 | a片免费视频在线观看 | 久久精品人人做人人综合 | 俺去俺来也在线www色官网 | 色综合天天综合狠狠爱 | 曰韩无码二三区中文字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 高潮毛片无遮挡高清免费 | 双乳奶水饱满少妇呻吟 | 国产在线精品一区二区高清不卡 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲国产精品久久久久久 | 一本久道高清无码视频 | 国产美女极度色诱视频www | 永久免费观看国产裸体美女 | 亚洲成在人网站无码天堂 | 国产精品多人p群无码 | 国产成人精品三级麻豆 | 亚洲精品中文字幕乱码 | 国产三级久久久精品麻豆三级 | 亚洲精品国产品国语在线观看 | 国产成人无码一二三区视频 | 欧美精品一区二区精品久久 | 在线а√天堂中文官网 | 日本xxxx色视频在线观看免费 | 国产又粗又硬又大爽黄老大爷视 | 国产精品久久久久久亚洲毛片 | 国产精品人妻一区二区三区四 | 久久久久久久人妻无码中文字幕爆 | 亚洲成a人一区二区三区 | 亚洲日本va午夜在线电影 | 老熟妇乱子伦牲交视频 | 又色又爽又黄的美女裸体网站 | 精品一区二区不卡无码av | 亚洲色偷偷偷综合网 | 国产黄在线观看免费观看不卡 | 人人爽人人爽人人片av亚洲 | 亚洲国产成人a精品不卡在线 | 免费网站看v片在线18禁无码 | 色情久久久av熟女人妻网站 | 国产在线精品一区二区高清不卡 | 亚洲s色大片在线观看 | 任你躁国产自任一区二区三区 | 亚洲理论电影在线观看 | 乱码av麻豆丝袜熟女系列 | 国产精品办公室沙发 | 红桃av一区二区三区在线无码av | 国产三级精品三级男人的天堂 | 国产性生大片免费观看性 | 我要看www免费看插插视频 | 俄罗斯老熟妇色xxxx | 国产精华av午夜在线观看 | 久久午夜无码鲁丝片秋霞 | 色妞www精品免费视频 | aⅴ在线视频男人的天堂 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 一本久道高清无码视频 | 图片小说视频一区二区 | 波多野结衣av一区二区全免费观看 | 丰满肥臀大屁股熟妇激情视频 | 99精品无人区乱码1区2区3区 | 欧美亚洲日韩国产人成在线播放 | 日韩在线不卡免费视频一区 | 日韩欧美群交p片內射中文 | 亚洲综合精品香蕉久久网 | 日韩精品成人一区二区三区 | 荫蒂添的好舒服视频囗交 | 欧美午夜特黄aaaaaa片 | 又大又硬又黄的免费视频 | 三上悠亚人妻中文字幕在线 | 午夜时刻免费入口 | 综合激情五月综合激情五月激情1 | 久久精品国产99久久6动漫 | 在教室伦流澡到高潮hnp视频 | 一本久久a久久精品亚洲 | 亚洲中文字幕在线观看 | 国产乱人伦偷精品视频 | 久久 国产 尿 小便 嘘嘘 | 娇妻被黑人粗大高潮白浆 | 欧美丰满熟妇xxxx | 午夜成人1000部免费视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲人成a在线v网站 | 色情久久久av熟女人妻网站 | 秋霞特色aa大片 | 午夜肉伦伦影院 | 人妻插b视频一区二区三区 | 久久久久久亚洲精品a片成人 | 国产人妻大战黑人第1集 | 人人妻人人澡人人爽人人精品 | 亚洲中文字幕无码一久久区 | 两性色午夜免费视频 | 欧美人与禽zoz0性伦交 | 在教室伦流澡到高潮hnp视频 | 伊人久久婷婷五月综合97色 | 久青草影院在线观看国产 | 亚洲精品久久久久avwww潮水 | 丰满人妻一区二区三区免费视频 | 国产人成高清在线视频99最全资源 | 亲嘴扒胸摸屁股激烈网站 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文无码成人免费视频在线观看 | 色婷婷综合中文久久一本 | 色综合久久网 | 伊在人天堂亚洲香蕉精品区 | 国产乱子伦视频在线播放 | 激情爆乳一区二区三区 | 激情内射亚州一区二区三区爱妻 | 亚洲s码欧洲m码国产av | 欧美老妇与禽交 | 日韩少妇白浆无码系列 | 亚洲中文字幕无码一久久区 | 久久aⅴ免费观看 | 麻豆国产人妻欲求不满谁演的 | 偷窥村妇洗澡毛毛多 | 国产精品二区一区二区aⅴ污介绍 | 老熟女重囗味hdxx69 | 久久亚洲中文字幕精品一区 | 男人的天堂av网站 | 欧美大屁股xxxxhd黑色 | www成人国产高清内射 | 福利一区二区三区视频在线观看 | 亚洲中文字幕无码一久久区 | 夜精品a片一区二区三区无码白浆 | 亚洲国产欧美日韩精品一区二区三区 | 图片小说视频一区二区 | 午夜理论片yy44880影院 | 亚洲 日韩 欧美 成人 在线观看 | 午夜理论片yy44880影院 | 免费播放一区二区三区 | 亚洲午夜福利在线观看 | 无码乱肉视频免费大全合集 | 日日碰狠狠躁久久躁蜜桃 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 性欧美牲交在线视频 | 动漫av网站免费观看 | 熟妇女人妻丰满少妇中文字幕 | 久久综合给合久久狠狠狠97色 | 性做久久久久久久久 | 少妇一晚三次一区二区三区 | 99久久人妻精品免费一区 | 99久久久无码国产aaa精品 | 国产av无码专区亚洲awww | 国产精品久久久久无码av色戒 | 小sao货水好多真紧h无码视频 | 亚洲国产欧美日韩精品一区二区三区 | 成人无码精品一区二区三区 | 国产精品99久久精品爆乳 | 激情内射亚州一区二区三区爱妻 | 色噜噜亚洲男人的天堂 | 欧美性黑人极品hd | 欧美性生交活xxxxxdddd | 国产精品久久久久9999小说 | 亚洲综合在线一区二区三区 | 曰本女人与公拘交酡免费视频 | 国产乱人伦偷精品视频 | 99久久久国产精品无码免费 | 日本肉体xxxx裸交 | 亚洲精品综合一区二区三区在线 | 精品亚洲成av人在线观看 | 久久久久久a亚洲欧洲av冫 | 伊人久久婷婷五月综合97色 | 久久久中文字幕日本无吗 | 图片小说视频一区二区 | 97久久精品无码一区二区 | 久久亚洲精品成人无码 | 性欧美疯狂xxxxbbbb | 日本熟妇乱子伦xxxx | 亚洲码国产精品高潮在线 | 国产绳艺sm调教室论坛 | 国产人妻人伦精品1国产丝袜 | 好屌草这里只有精品 | 熟妇人妻激情偷爽文 | 成人精品天堂一区二区三区 | 东京热男人av天堂 | 亚洲一区二区观看播放 | 性色av无码免费一区二区三区 | 色婷婷香蕉在线一区二区 | 欧美丰满熟妇xxxx | 日韩人妻无码一区二区三区久久99 | 免费网站看v片在线18禁无码 | 国产精品嫩草久久久久 | 色狠狠av一区二区三区 | 久久 国产 尿 小便 嘘嘘 | 少妇久久久久久人妻无码 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久亚洲日韩精品一区二区三区 | 欧美自拍另类欧美综合图片区 | 欧美熟妇另类久久久久久不卡 | 亚洲色欲色欲天天天www | 一个人看的www免费视频在线观看 | 久久精品国产99久久6动漫 | 东京无码熟妇人妻av在线网址 | 午夜福利试看120秒体验区 | 色婷婷综合中文久久一本 | 欧美人与物videos另类 | 国精产品一区二区三区 | 乌克兰少妇性做爰 | 亚洲男人av天堂午夜在 | 色综合视频一区二区三区 | 久久国产自偷自偷免费一区调 | 国产亚洲精品久久久久久久 | 亚洲日韩av一区二区三区四区 | 中文字幕久久久久人妻 | 小泽玛莉亚一区二区视频在线 | 国产精品无码一区二区三区不卡 | 欧美35页视频在线观看 | 国产99久久精品一区二区 | 成人亚洲精品久久久久软件 | 免费男性肉肉影院 | 秋霞特色aa大片 | 亚洲精品中文字幕乱码 | 亚洲国产精华液网站w | 最近的中文字幕在线看视频 | 丰满人妻一区二区三区免费视频 | 午夜免费福利小电影 | 小泽玛莉亚一区二区视频在线 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 任你躁国产自任一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 精品无码一区二区三区的天堂 | 中文字幕乱码中文乱码51精品 | 中文字幕乱码亚洲无线三区 | 97夜夜澡人人双人人人喊 | 国产亲子乱弄免费视频 | 宝宝好涨水快流出来免费视频 | 男女下面进入的视频免费午夜 | 麻豆成人精品国产免费 | 久久综合久久自在自线精品自 | 亚洲а∨天堂久久精品2021 | 亚洲欧洲中文日韩av乱码 | 中文字幕人成乱码熟女app | 亚洲熟妇色xxxxx欧美老妇y | 天天拍夜夜添久久精品 | 国产成人无码区免费内射一片色欲 | 图片小说视频一区二区 | www成人国产高清内射 | 国产一区二区三区四区五区加勒比 | 永久免费精品精品永久-夜色 | 4hu四虎永久在线观看 | 天海翼激烈高潮到腰振不止 | 成人一区二区免费视频 | 无套内射视频囯产 | 日韩精品无码免费一区二区三区 | 国产人妻人伦精品1国产丝袜 | 无码播放一区二区三区 | 无码播放一区二区三区 | 欧洲美熟女乱又伦 | 色欲久久久天天天综合网精品 | 人妻互换免费中文字幕 | 综合网日日天干夜夜久久 | а天堂中文在线官网 | 熟妇人妻激情偷爽文 | 99久久婷婷国产综合精品青草免费 | 成人试看120秒体验区 | 国产精品久久国产精品99 | 亚洲男人av天堂午夜在 | 丰满少妇弄高潮了www | 国产免费观看黄av片 | 奇米影视7777久久精品人人爽 | 国产亲子乱弄免费视频 | 久久亚洲中文字幕无码 | 无码毛片视频一区二区本码 | 国产性生交xxxxx无码 | 国产在线无码精品电影网 | 国产熟妇高潮叫床视频播放 | 老头边吃奶边弄进去呻吟 | 天天躁夜夜躁狠狠是什么心态 | 久久精品国产日本波多野结衣 | 国产99久久精品一区二区 | 又色又爽又黄的美女裸体网站 | 色诱久久久久综合网ywww | 麻豆国产97在线 | 欧洲 | av人摸人人人澡人人超碰下载 | 亚洲欧美日韩国产精品一区二区 | 国产真实乱对白精彩久久 | 中文无码精品a∨在线观看不卡 | 娇妻被黑人粗大高潮白浆 | 九九久久精品国产免费看小说 | 少妇人妻大乳在线视频 | 男女爱爱好爽视频免费看 | 精品久久久久久亚洲精品 | 岛国片人妻三上悠亚 | 国产一区二区三区日韩精品 | 激情爆乳一区二区三区 | 久久精品99久久香蕉国产色戒 | 久久99精品久久久久久动态图 | 国产精品久久久av久久久 | 亚洲中文字幕乱码av波多ji | 国产精品无码一区二区三区不卡 | а√资源新版在线天堂 | 亚洲综合另类小说色区 | 少妇被黑人到高潮喷出白浆 | 麻豆人妻少妇精品无码专区 | 偷窥日本少妇撒尿chinese | 国产成人综合在线女婷五月99播放 | 性欧美熟妇videofreesex | 东京一本一道一二三区 | 亚洲人亚洲人成电影网站色 | 色综合天天综合狠狠爱 | 女人和拘做爰正片视频 | 国产免费久久精品国产传媒 | 欧美第一黄网免费网站 | 一本久久a久久精品vr综合 | 国产麻豆精品一区二区三区v视界 | 精品一区二区三区波多野结衣 | 丁香啪啪综合成人亚洲 | 国产精品欧美成人 | 国产一区二区三区四区五区加勒比 | √天堂资源地址中文在线 | 午夜免费福利小电影 | 久久久久99精品成人片 | 高潮喷水的毛片 | 亚洲色无码一区二区三区 | 老司机亚洲精品影院无码 | 亚洲日韩一区二区三区 | 99国产欧美久久久精品 | 日韩欧美中文字幕公布 | 国产麻豆精品精东影业av网站 | 亚洲爆乳大丰满无码专区 | 国产成人精品视频ⅴa片软件竹菊 | 一本久久a久久精品亚洲 | 中文字幕人妻丝袜二区 | 图片区 小说区 区 亚洲五月 | 乌克兰少妇xxxx做受 | 青草视频在线播放 | 久在线观看福利视频 | 色 综合 欧美 亚洲 国产 | 精品久久久无码人妻字幂 | 无码免费一区二区三区 | 国产精品对白交换视频 | 亚洲精品www久久久 | 99久久无码一区人妻 | 亚洲成av人综合在线观看 | 亚洲日韩一区二区 | 好爽又高潮了毛片免费下载 | 精品夜夜澡人妻无码av蜜桃 | 久久97精品久久久久久久不卡 | 老司机亚洲精品影院无码 | 日本肉体xxxx裸交 | 亚欧洲精品在线视频免费观看 | 欧洲欧美人成视频在线 | 精品国产一区二区三区四区在线看 | 正在播放老肥熟妇露脸 | 国产性生交xxxxx无码 | 国产真实夫妇视频 | 日本一本二本三区免费 | 国产精品怡红院永久免费 | 久久熟妇人妻午夜寂寞影院 | 日韩精品久久久肉伦网站 | 国产免费久久精品国产传媒 | 日韩亚洲欧美中文高清在线 | 久久97精品久久久久久久不卡 | 一区二区传媒有限公司 | 香港三级日本三级妇三级 | 少妇性俱乐部纵欲狂欢电影 | 国产精品亚洲lv粉色 | 久久久www成人免费毛片 | 国产无av码在线观看 | 色婷婷香蕉在线一区二区 | 国産精品久久久久久久 | 亚洲精品一区二区三区四区五区 | 亚洲aⅴ无码成人网站国产app | 伦伦影院午夜理论片 | а√天堂www在线天堂小说 | 国产人妻大战黑人第1集 | 亚洲一区二区观看播放 | 久久亚洲精品中文字幕无男同 | av无码久久久久不卡免费网站 | 最新国产麻豆aⅴ精品无码 | 亚洲呦女专区 | 性欧美牲交在线视频 | 亚洲成av人在线观看网址 | 宝宝好涨水快流出来免费视频 | 国产福利视频一区二区 | 夜夜影院未满十八勿进 | 在教室伦流澡到高潮hnp视频 | www国产精品内射老师 | 2020最新国产自产精品 | 少妇太爽了在线观看 | 国产女主播喷水视频在线观看 | 成人av无码一区二区三区 | 伊人色综合久久天天小片 | 又湿又紧又大又爽a视频国产 | 色一情一乱一伦一视频免费看 | 人妻与老人中文字幕 | 午夜时刻免费入口 | av无码久久久久不卡免费网站 | 久久精品丝袜高跟鞋 | 亚洲国产精品久久久天堂 | a在线观看免费网站大全 | 亚洲成色www久久网站 | 国产亚洲tv在线观看 | 亚洲精品一区二区三区大桥未久 | 日产国产精品亚洲系列 | 国产精品va在线播放 | 精品国产aⅴ无码一区二区 | 国产精品久久久av久久久 | 国产精品第一国产精品 | 成人女人看片免费视频放人 | 精品少妇爆乳无码av无码专区 | 伊人久久大香线蕉av一区二区 | 少妇高潮一区二区三区99 | 在线欧美精品一区二区三区 | 成 人 网 站国产免费观看 | 无码人妻精品一区二区三区下载 | 人人爽人人澡人人人妻 | 国产精品无套呻吟在线 | 国产偷自视频区视频 | 在线 国产 欧美 亚洲 天堂 | 1000部啪啪未满十八勿入下载 | 强开小婷嫩苞又嫩又紧视频 | 国语精品一区二区三区 | 无人区乱码一区二区三区 | 老熟妇乱子伦牲交视频 | 综合人妻久久一区二区精品 | 国产精品美女久久久久av爽李琼 | 国产97色在线 | 免 | 午夜无码人妻av大片色欲 | 俺去俺来也www色官网 | 欧美熟妇另类久久久久久多毛 | 女人被男人躁得好爽免费视频 | 欧美日韩亚洲国产精品 | 无码毛片视频一区二区本码 | 在线精品国产一区二区三区 | 欧美怡红院免费全部视频 | 中文字幕无码日韩欧毛 | 国产成人一区二区三区在线观看 | 久久国产精品精品国产色婷婷 | 成年美女黄网站色大免费视频 | 性欧美videos高清精品 | 久久无码专区国产精品s | 色一情一乱一伦一视频免费看 | 国内精品久久久久久中文字幕 | 国产av久久久久精东av | 国产区女主播在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 少妇一晚三次一区二区三区 | 国产深夜福利视频在线 | 亚洲中文字幕在线无码一区二区 | 无码播放一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 在教室伦流澡到高潮hnp视频 | 国产精品内射视频免费 | 奇米影视7777久久精品人人爽 | 初尝人妻少妇中文字幕 | 成人影院yy111111在线观看 | 国产成人无码区免费内射一片色欲 | 特大黑人娇小亚洲女 | 国产精品美女久久久久av爽李琼 | 亚洲精品国产精品乱码视色 | 婷婷五月综合激情中文字幕 | 日韩人妻无码一区二区三区久久99 | 中文字幕无码免费久久99 | 精品久久综合1区2区3区激情 | 亚洲gv猛男gv无码男同 | 国产在线一区二区三区四区五区 | 国产明星裸体无码xxxx视频 | 色综合久久久久综合一本到桃花网 | 免费播放一区二区三区 | 中文字幕久久久久人妻 | 强奷人妻日本中文字幕 | 国产精品成人av在线观看 | 亚洲精品一区二区三区在线观看 | 性欧美熟妇videofreesex | 51国偷自产一区二区三区 | 曰韩无码二三区中文字幕 | 一本久久伊人热热精品中文字幕 | 十八禁视频网站在线观看 | 国产婷婷色一区二区三区在线 | 女人被男人躁得好爽免费视频 | 久久久久成人精品免费播放动漫 | 午夜丰满少妇性开放视频 | 人妻体内射精一区二区三四 | 国产国语老龄妇女a片 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品人妻人人做人人爽夜夜爽 | 亚洲国产综合无码一区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久久久久亚洲精品a片成人 | www国产亚洲精品久久网站 | 又湿又紧又大又爽a视频国产 | 无码人妻av免费一区二区三区 | 亚洲成av人片天堂网无码】 | 美女黄网站人色视频免费国产 | 国产超级va在线观看视频 | 两性色午夜免费视频 | 国产精品国产自线拍免费软件 | 日韩精品成人一区二区三区 | 人妻熟女一区 | 99久久久无码国产精品免费 | 国产精品美女久久久久av爽李琼 | 国语精品一区二区三区 | 久久久久久久久888 | 男人扒开女人内裤强吻桶进去 | 国产口爆吞精在线视频 | 久久国产36精品色熟妇 | 影音先锋中文字幕无码 | 奇米影视7777久久精品 | 国内精品久久久久久中文字幕 | 丝袜人妻一区二区三区 | 激情内射亚州一区二区三区爱妻 | 纯爱无遮挡h肉动漫在线播放 | 久久熟妇人妻午夜寂寞影院 | 国产极品美女高潮无套在线观看 | 欧美野外疯狂做受xxxx高潮 | 高清不卡一区二区三区 | 国产在线aaa片一区二区99 | 日韩人妻少妇一区二区三区 | 精品亚洲成av人在线观看 | 精品亚洲成av人在线观看 | 国产电影无码午夜在线播放 | 成在人线av无码免费 | 亚洲色偷偷男人的天堂 | 中文字幕亚洲情99在线 | 欧美高清在线精品一区 | 成人片黄网站色大片免费观看 | 日日天干夜夜狠狠爱 | 少妇无码av无码专区在线观看 | 18禁止看的免费污网站 | 欧美精品国产综合久久 | 亚洲日韩av一区二区三区中文 | 日本精品人妻无码免费大全 | 欧美黑人性暴力猛交喷水 | 内射欧美老妇wbb | 亚洲欧美精品aaaaaa片 | 国产后入清纯学生妹 | 亚洲精品一区三区三区在线观看 | 欧美日韩精品 | 日韩av无码一区二区三区 | 国产97色在线 | 免 | 久久综合久久自在自线精品自 | 久久99精品久久久久久 | 精品国产成人一区二区三区 | 亚洲人成网站免费播放 | aⅴ在线视频男人的天堂 | 欧美一区二区三区视频在线观看 | 欧美国产亚洲日韩在线二区 | 久久久av男人的天堂 | 欧美精品一区二区精品久久 | 国产婷婷色一区二区三区在线 | 免费无码的av片在线观看 | 一本大道久久东京热无码av | 日韩少妇白浆无码系列 | 国产免费久久久久久无码 | 婷婷丁香六月激情综合啪 | 樱花草在线播放免费中文 | 亚洲精品国产品国语在线观看 | 免费无码肉片在线观看 | 中文字幕无码人妻少妇免费 | 欧美 日韩 亚洲 在线 | 日韩人妻无码一区二区三区久久99 | 国产无遮挡吃胸膜奶免费看 | 小鲜肉自慰网站xnxx | 色情久久久av熟女人妻网站 | 国产黑色丝袜在线播放 | 精品一区二区不卡无码av | 国产一精品一av一免费 | 99精品视频在线观看免费 | 无遮挡啪啪摇乳动态图 | 国产一区二区三区影院 | 一个人看的视频www在线 | 日本一卡二卡不卡视频查询 | 日韩人妻少妇一区二区三区 | 亚洲色欲色欲天天天www | 男女性色大片免费网站 | 国产精品丝袜黑色高跟鞋 | aⅴ亚洲 日韩 色 图网站 播放 | 无遮挡啪啪摇乳动态图 | 3d动漫精品啪啪一区二区中 | 国产成人无码一二三区视频 | 久久国产36精品色熟妇 | 亚洲精品一区二区三区大桥未久 | 无码国产色欲xxxxx视频 | 乌克兰少妇性做爰 | 国内精品一区二区三区不卡 | 亚洲无人区午夜福利码高清完整版 | 免费中文字幕日韩欧美 | 丝袜美腿亚洲一区二区 | 露脸叫床粗话东北少妇 | 久久精品中文闷骚内射 | 九月婷婷人人澡人人添人人爽 | 超碰97人人射妻 | 国产人妻精品一区二区三区 | 国产 精品 自在自线 | 欧美日韩精品 | 日本www一道久久久免费榴莲 | 国产成人精品久久亚洲高清不卡 | 亚洲区小说区激情区图片区 | 亚洲综合无码一区二区三区 | 国色天香社区在线视频 | 中文字幕av无码一区二区三区电影 | 精品无码国产自产拍在线观看蜜 | 欧美性黑人极品hd | 久久久久久国产精品无码下载 | 美女毛片一区二区三区四区 | 欧美老妇交乱视频在线观看 | 午夜精品久久久内射近拍高清 | 沈阳熟女露脸对白视频 | 亚洲区小说区激情区图片区 | 国产人妻大战黑人第1集 | 少妇性荡欲午夜性开放视频剧场 | 高清国产亚洲精品自在久久 | 亚洲毛片av日韩av无码 | 午夜精品久久久久久久久 | 成人女人看片免费视频放人 | 九九综合va免费看 | 中文字幕+乱码+中文字幕一区 | 久久精品人人做人人综合 | 久久精品国产99久久6动漫 | 国产亚洲欧美日韩亚洲中文色 | 欧美阿v高清资源不卡在线播放 | av香港经典三级级 在线 | 午夜精品一区二区三区在线观看 | 成人aaa片一区国产精品 | 日本www一道久久久免费榴莲 | 国产精品久久国产三级国 | 国产特级毛片aaaaaa高潮流水 | 高清国产亚洲精品自在久久 | 波多野结衣乳巨码无在线观看 | 国产国产精品人在线视 | 久久久久人妻一区精品色欧美 | 日日摸日日碰夜夜爽av | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲小说图区综合在线 | 爽爽影院免费观看 | 老熟女重囗味hdxx69 | 成人性做爰aaa片免费看不忠 | 综合激情五月综合激情五月激情1 | 老司机亚洲精品影院无码 | 无码人妻av免费一区二区三区 | 熟女少妇在线视频播放 | 欧美35页视频在线观看 | 国产偷抇久久精品a片69 | 国产午夜精品一区二区三区嫩草 | 丰满妇女强制高潮18xxxx | 欧美成人高清在线播放 | 久久99精品久久久久久动态图 | 亚洲成在人网站无码天堂 | 搡女人真爽免费视频大全 | 国产麻豆精品一区二区三区v视界 | 久久精品成人欧美大片 | 日产精品99久久久久久 | 国产午夜视频在线观看 | 少妇邻居内射在线 | 免费网站看v片在线18禁无码 | 亚洲s码欧洲m码国产av | 日韩少妇内射免费播放 | 亚洲国产综合无码一区 | 国产高清av在线播放 | 国产午夜无码视频在线观看 | 无码av免费一区二区三区试看 | √8天堂资源地址中文在线 | 中文字幕精品av一区二区五区 | 秋霞特色aa大片 | 欧美兽交xxxx×视频 | 日日摸夜夜摸狠狠摸婷婷 | 成人免费视频在线观看 | 久久99国产综合精品 | 日本一区二区三区免费播放 | 日本xxxx色视频在线观看免费 | 国产一区二区三区精品视频 | 亚洲精品国产第一综合99久久 | 国产精品鲁鲁鲁 | ass日本丰满熟妇pics | 中文字幕无码日韩专区 | 国产av一区二区精品久久凹凸 | 久久人人爽人人人人片 | 99久久人妻精品免费二区 | 欧美亚洲日韩国产人成在线播放 | 99久久99久久免费精品蜜桃 | 波多野结衣高清一区二区三区 | 性啪啪chinese东北女人 | 久久成人a毛片免费观看网站 | 色欲久久久天天天综合网精品 | 精品国产一区av天美传媒 | 国产麻豆精品一区二区三区v视界 | 国产精品国产自线拍免费软件 | 免费无码午夜福利片69 | 久久综合给合久久狠狠狠97色 | 国产精品久久福利网站 | 曰韩无码二三区中文字幕 | 婷婷五月综合激情中文字幕 | 又大又硬又爽免费视频 | 无码人妻精品一区二区三区下载 | 欧美 日韩 人妻 高清 中文 | 亚洲国产精华液网站w | 国产手机在线αⅴ片无码观看 | 国产三级精品三级男人的天堂 | 精品欧美一区二区三区久久久 | 天堂一区人妻无码 | 欧美真人作爱免费视频 | 亚洲一区二区三区在线观看网站 | 一本久久伊人热热精品中文字幕 | 动漫av一区二区在线观看 | 少妇被粗大的猛进出69影院 | 久久久久人妻一区精品色欧美 | 国产午夜精品一区二区三区嫩草 | 国产国语老龄妇女a片 | 久久天天躁夜夜躁狠狠 | 国产精品人人爽人人做我的可爱 | 性生交大片免费看女人按摩摩 | 大肉大捧一进一出视频出来呀 | 超碰97人人做人人爱少妇 | 亚洲色在线无码国产精品不卡 | 亚洲色欲色欲天天天www | 天堂久久天堂av色综合 | 欧美日本免费一区二区三区 | 日韩欧美成人免费观看 | 亚洲人成影院在线无码按摩店 | 97人妻精品一区二区三区 | 少妇无套内谢久久久久 | 日韩成人一区二区三区在线观看 | 欧美人与禽zoz0性伦交 | 久久精品国产日本波多野结衣 | 久久天天躁狠狠躁夜夜免费观看 | 久久99精品国产麻豆 | 亚洲区小说区激情区图片区 | 强辱丰满人妻hd中文字幕 | 精品无人国产偷自产在线 | 又大又硬又黄的免费视频 | 免费观看激色视频网站 | 欧美成人午夜精品久久久 | 东京无码熟妇人妻av在线网址 | 天天av天天av天天透 | 九月婷婷人人澡人人添人人爽 | 亚洲成av人在线观看网址 | 国产成人精品久久亚洲高清不卡 | 精品国偷自产在线 | 成人片黄网站色大片免费观看 | 免费国产黄网站在线观看 | 国内精品久久毛片一区二区 | 欧美老熟妇乱xxxxx | 国产午夜精品一区二区三区嫩草 | 97色伦图片97综合影院 | 国产在线一区二区三区四区五区 | 亚洲 高清 成人 动漫 | 波多野结衣av在线观看 | 日本精品人妻无码免费大全 | 精品一区二区三区波多野结衣 | 天天躁夜夜躁狠狠是什么心态 | 中文字幕 亚洲精品 第1页 | 久久久国产精品无码免费专区 | 鲁大师影院在线观看 | 久久久久久a亚洲欧洲av冫 | 亚洲一区二区三区偷拍女厕 | 蜜臀av无码人妻精品 | 欧美猛少妇色xxxxx | 国产午夜福利亚洲第一 | 美女扒开屁股让男人桶 | 亚洲高清偷拍一区二区三区 | 欧美xxxxx精品 | 熟妇女人妻丰满少妇中文字幕 | 成人一区二区免费视频 | 国产激情精品一区二区三区 | 夜精品a片一区二区三区无码白浆 | 波多野结衣一区二区三区av免费 | 麻花豆传媒剧国产免费mv在线 | 麻豆精产国品 | 国产精品无套呻吟在线 | 亚洲a无码综合a国产av中文 | 欧美丰满熟妇xxxx | 六月丁香婷婷色狠狠久久 | 东北女人啪啪对白 | 老熟妇乱子伦牲交视频 | 亚洲国产综合无码一区 | 一本大道久久东京热无码av | 国产内射老熟女aaaa | 人妻尝试又大又粗久久 | 精品人妻人人做人人爽 | 激情内射亚州一区二区三区爱妻 | 久久精品视频在线看15 | 秋霞成人午夜鲁丝一区二区三区 | 妺妺窝人体色www婷婷 | 亚洲国产成人av在线观看 | 无码播放一区二区三区 | 国产一区二区三区日韩精品 | 久久成人a毛片免费观看网站 | 内射巨臀欧美在线视频 | 麻豆蜜桃av蜜臀av色欲av | 亚洲第一无码av无码专区 | 色窝窝无码一区二区三区色欲 | 色五月五月丁香亚洲综合网 | 久久久久久久久蜜桃 | 日本又色又爽又黄的a片18禁 | 一本色道久久综合狠狠躁 | 成 人影片 免费观看 | 麻豆国产97在线 | 欧洲 | 欧美丰满老熟妇xxxxx性 | 亚洲狠狠婷婷综合久久 | 在线观看国产午夜福利片 | 波多野结衣aⅴ在线 | 2019午夜福利不卡片在线 | 亚洲精品一区二区三区在线观看 | 熟女俱乐部五十路六十路av | аⅴ资源天堂资源库在线 | 7777奇米四色成人眼影 | 鲁鲁鲁爽爽爽在线视频观看 | 日日摸日日碰夜夜爽av | 无套内谢老熟女 | 久久伊人色av天堂九九小黄鸭 | 精品乱子伦一区二区三区 | 无码福利日韩神码福利片 | 中文字幕乱码人妻二区三区 | 亚洲无人区一区二区三区 | 国产激情综合五月久久 | 一区二区三区乱码在线 | 欧洲 | 亚洲色欲色欲天天天www | 久久精品中文字幕一区 | 人妻无码αv中文字幕久久琪琪布 | 国产亚洲人成在线播放 | 国产精品资源一区二区 | 国产午夜无码精品免费看 | 日韩av无码中文无码电影 | 国产综合久久久久鬼色 | 成 人 免费观看网站 | 国产va免费精品观看 | 亚洲成av人综合在线观看 | 久久久婷婷五月亚洲97号色 | 国产美女精品一区二区三区 | 麻豆成人精品国产免费 | 亚洲午夜福利在线观看 | 欧美精品在线观看 | 性做久久久久久久久 | 亚洲日韩av片在线观看 | 色老头在线一区二区三区 | 国产在线无码精品电影网 | 亚洲一区二区三区四区 | 亚洲乱码国产乱码精品精 | 国产精品成人av在线观看 | 国产激情精品一区二区三区 | 在线成人www免费观看视频 | 少妇人妻大乳在线视频 | 一本久久a久久精品亚洲 | 性色欲网站人妻丰满中文久久不卡 | 欧美第一黄网免费网站 | 国产精品美女久久久久av爽李琼 | 在线欧美精品一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 久久久中文字幕日本无吗 | 亚洲色大成网站www国产 | 色狠狠av一区二区三区 | 亚洲欧美综合区丁香五月小说 | 波多野结衣av在线观看 | 男人的天堂2018无码 | 久久综合激激的五月天 | 粗大的内捧猛烈进出视频 | 色五月五月丁香亚洲综合网 | а天堂中文在线官网 | 荫蒂被男人添的好舒服爽免费视频 | 人人妻人人澡人人爽欧美一区 | 久久久www成人免费毛片 | 国内揄拍国内精品少妇国语 | 国产精品久久久久9999小说 | 国产内射爽爽大片视频社区在线 | 成人无码精品1区2区3区免费看 | 激情国产av做激情国产爱 | 97夜夜澡人人爽人人喊中国片 | 国产精品美女久久久网av | 欧洲极品少妇 | 无人区乱码一区二区三区 | 亚洲 日韩 欧美 成人 在线观看 | 精品无码一区二区三区爱欲 | 麻豆果冻传媒2021精品传媒一区下载 | 免费播放一区二区三区 | 无码av岛国片在线播放 | 最近中文2019字幕第二页 | 欧美阿v高清资源不卡在线播放 | 曰韩少妇内射免费播放 | 中文字幕乱码人妻二区三区 | 日韩av无码一区二区三区 | 无码毛片视频一区二区本码 | 国产精品毛片一区二区 | 澳门永久av免费网站 | 国产成人综合在线女婷五月99播放 | 无码人妻久久一区二区三区不卡 | 亚洲色www成人永久网址 | 中文毛片无遮挡高清免费 | 女人和拘做爰正片视频 | 国产成人综合色在线观看网站 | 精品国产乱码久久久久乱码 | 婷婷丁香五月天综合东京热 | 亚洲伊人久久精品影院 | 成人动漫在线观看 | 又紧又大又爽精品一区二区 | 亚洲欧美色中文字幕在线 | 2020久久香蕉国产线看观看 | 国产无套粉嫩白浆在线 | 少妇人妻大乳在线视频 | 亚洲国产精品久久人人爱 | 中文字幕无码av波多野吉衣 | 无码一区二区三区在线观看 | 日本熟妇大屁股人妻 | 99国产欧美久久久精品 | 中文字幕无码日韩专区 | 欧美人与牲动交xxxx | 国产精品永久免费视频 | 特黄特色大片免费播放器图片 | 久久99精品久久久久婷婷 | 亚洲aⅴ无码成人网站国产app | 熟妇人妻无码xxx视频 | 中文字幕av伊人av无码av | 少妇人妻大乳在线视频 | 蜜臀av在线播放 久久综合激激的五月天 | 亚洲自偷自偷在线制服 | 国内精品九九久久久精品 | 中文字幕无线码免费人妻 | 色综合久久88色综合天天 | 日本大乳高潮视频在线观看 | 欧美 丝袜 自拍 制服 另类 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 女人色极品影院 | 无码一区二区三区在线 | 夜精品a片一区二区三区无码白浆 | 夜夜高潮次次欢爽av女 | 久久久无码中文字幕久... | 久久久久成人精品免费播放动漫 | 欧洲vodafone精品性 | 人人爽人人澡人人高潮 | 久久亚洲国产成人精品性色 | 欧美国产日韩亚洲中文 | 51国偷自产一区二区三区 | 麻豆成人精品国产免费 | 国产明星裸体无码xxxx视频 | 天堂а√在线中文在线 | 东京热无码av男人的天堂 | 亚洲色www成人永久网址 | 一个人看的视频www在线 | 亚洲高清偷拍一区二区三区 | 九九热爱视频精品 | 国产午夜无码视频在线观看 | 性史性农村dvd毛片 | 亚洲娇小与黑人巨大交 | 1000部夫妻午夜免费 | 久久久久免费看成人影片 | 特黄特色大片免费播放器图片 | 久久99精品国产麻豆蜜芽 | 色综合视频一区二区三区 | 中文字幕 亚洲精品 第1页 | 免费网站看v片在线18禁无码 | 亚洲国产精品毛片av不卡在线 | 娇妻被黑人粗大高潮白浆 | 99久久无码一区人妻 | 日本xxxx色视频在线观看免费 | 日韩人妻系列无码专区 | 国产一区二区三区四区五区加勒比 | 中文字幕无码av激情不卡 | 成人亚洲精品久久久久 | 国产精品国产自线拍免费软件 | 内射后入在线观看一区 | 免费乱码人妻系列无码专区 | 亚洲自偷精品视频自拍 | 精品日本一区二区三区在线观看 | 亚洲a无码综合a国产av中文 | 国产香蕉97碰碰久久人人 | 日本在线高清不卡免费播放 | 国产精品久久久久无码av色戒 | 精品国产福利一区二区 | 色一情一乱一伦一区二区三欧美 | 国产福利视频一区二区 | 免费视频欧美无人区码 | 国产亚洲精品久久久久久国模美 | 狠狠色丁香久久婷婷综合五月 | 狠狠亚洲超碰狼人久久 | 中文字幕无码av波多野吉衣 | 无码午夜成人1000部免费视频 | 无遮挡啪啪摇乳动态图 | 亚洲成av人片在线观看无码不卡 | 欧洲vodafone精品性 | 亚洲成a人片在线观看无码 | 色综合视频一区二区三区 | 少妇久久久久久人妻无码 | 国产手机在线αⅴ片无码观看 | 日本护士xxxxhd少妇 | 激情人妻另类人妻伦 | 99国产欧美久久久精品 | 国产疯狂伦交大片 | 日本成熟视频免费视频 | 色综合视频一区二区三区 | 东北女人啪啪对白 | 99er热精品视频 | 精品无码av一区二区三区 | 国产无套粉嫩白浆在线 | 狂野欧美性猛xxxx乱大交 | 中国女人内谢69xxxxxa片 | 久久综合狠狠综合久久综合88 | 亚洲爆乳大丰满无码专区 | 免费国产黄网站在线观看 | 国产精品久久久久9999小说 | 国产乱人伦av在线无码 | 伊人久久婷婷五月综合97色 | 十八禁真人啪啪免费网站 | 久久久久亚洲精品男人的天堂 | 国产高清不卡无码视频 | 亚洲日韩av一区二区三区四区 | 2019午夜福利不卡片在线 | 日韩精品无码一区二区中文字幕 | 国产乡下妇女做爰 | 国产人妻人伦精品 | 狂野欧美激情性xxxx | 久久久www成人免费毛片 | 动漫av网站免费观看 | 欧美日韩亚洲国产精品 | 激情人妻另类人妻伦 | 国产高潮视频在线观看 | 偷窥村妇洗澡毛毛多 | 俺去俺来也在线www色官网 | 久久久久久a亚洲欧洲av冫 | 久久久久久a亚洲欧洲av冫 | 国产尤物精品视频 | 亚洲国产精品久久久久久 | 亚洲精品无码人妻无码 | 日日摸夜夜摸狠狠摸婷婷 | 一本大道伊人av久久综合 | 国产激情无码一区二区app | 熟妇女人妻丰满少妇中文字幕 | 中文字幕 亚洲精品 第1页 | 青草青草久热国产精品 | 天天躁夜夜躁狠狠是什么心态 | 国产亚洲人成a在线v网站 | 国产成人无码a区在线观看视频app | 亚洲日本va午夜在线电影 | 丰腴饱满的极品熟妇 | 偷窥村妇洗澡毛毛多 | 国产熟女一区二区三区四区五区 | 精品久久久久香蕉网 | 日本一区二区更新不卡 | 精品无码国产一区二区三区av | 帮老师解开蕾丝奶罩吸乳网站 | 久久97精品久久久久久久不卡 | 国产精品鲁鲁鲁 | 精品国产一区二区三区av 性色 | 国产亚洲视频中文字幕97精品 | 久久精品女人天堂av免费观看 | 久久无码中文字幕免费影院蜜桃 | 中文字幕人妻无码一区二区三区 | 久久久精品欧美一区二区免费 | 天天av天天av天天透 | 中文字幕精品av一区二区五区 | 特大黑人娇小亚洲女 | 国产精品久久久午夜夜伦鲁鲁 | 国产熟妇高潮叫床视频播放 | 人妻人人添人妻人人爱 | 丰满妇女强制高潮18xxxx | 久久亚洲精品成人无码 | 高清不卡一区二区三区 | 亚洲成a人一区二区三区 | 四十如虎的丰满熟妇啪啪 | 熟女少妇人妻中文字幕 | 欧美激情内射喷水高潮 | 午夜无码人妻av大片色欲 | 扒开双腿疯狂进出爽爽爽视频 | 国产卡一卡二卡三 | 国产绳艺sm调教室论坛 | 99久久99久久免费精品蜜桃 | 国内精品人妻无码久久久影院 | 国产一区二区不卡老阿姨 | 国产另类ts人妖一区二区 | 国产精品丝袜黑色高跟鞋 | 免费国产成人高清在线观看网站 | 日产精品99久久久久久 | 中文字幕无码日韩专区 | 骚片av蜜桃精品一区 | 精品国产福利一区二区 | 亚洲中文无码av永久不收费 | 熟妇人妻无码xxx视频 | 大地资源中文第3页 | 欧美zoozzooz性欧美 | 日本高清一区免费中文视频 | 在线亚洲高清揄拍自拍一品区 | 久久久精品欧美一区二区免费 | 狠狠色欧美亚洲狠狠色www | 成人毛片一区二区 | 特黄特色大片免费播放器图片 | 欧洲熟妇精品视频 | 日日干夜夜干 | 99麻豆久久久国产精品免费 | 亚洲aⅴ无码成人网站国产app | 欧美阿v高清资源不卡在线播放 | 欧美性生交xxxxx久久久 | 午夜熟女插插xx免费视频 | 中文字幕色婷婷在线视频 | 夜精品a片一区二区三区无码白浆 | 亚洲无人区午夜福利码高清完整版 | 久久亚洲日韩精品一区二区三区 | 少妇无码一区二区二三区 | 国产麻豆精品一区二区三区v视界 | 亚洲成在人网站无码天堂 | 亚洲精品一区二区三区大桥未久 | 免费中文字幕日韩欧美 | 久久97精品久久久久久久不卡 | 亚洲综合无码久久精品综合 | 欧美日韩久久久精品a片 | 精品国偷自产在线 | 特大黑人娇小亚洲女 | 乱人伦人妻中文字幕无码 | 无人区乱码一区二区三区 | 国产精品丝袜黑色高跟鞋 | 国产成人无码一二三区视频 | 国产精品怡红院永久免费 | 免费观看的无遮挡av | 一本无码人妻在中文字幕免费 | 中文字幕无码免费久久99 | 免费播放一区二区三区 | 亚洲国精产品一二二线 | 真人与拘做受免费视频一 | 国产午夜无码视频在线观看 | 成人aaa片一区国产精品 | 97久久超碰中文字幕 | 日日干夜夜干 | 强辱丰满人妻hd中文字幕 | 欧美猛少妇色xxxxx | 日本一本二本三区免费 | 久9re热视频这里只有精品 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 人妻少妇精品无码专区动漫 | 国产成人无码一二三区视频 | 亚洲熟妇色xxxxx欧美老妇y | 熟妇人妻激情偷爽文 | 任你躁国产自任一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 欧美 丝袜 自拍 制服 另类 | 精品国产一区二区三区四区 | 久久精品国产一区二区三区肥胖 | 亚洲国产精品无码久久久久高潮 | 国产午夜亚洲精品不卡 | 一本色道久久综合亚洲精品不卡 | 暴力强奷在线播放无码 | 少妇无码一区二区二三区 | 18黄暴禁片在线观看 | 国产成人综合色在线观看网站 | 日日摸日日碰夜夜爽av | 亚洲人交乣女bbw | 久久久精品人妻久久影视 | 色噜噜亚洲男人的天堂 | 国产精品嫩草久久久久 | 国产色xx群视频射精 | 久久国语露脸国产精品电影 | 国产精品亚洲五月天高清 | 精品国产aⅴ无码一区二区 | 亲嘴扒胸摸屁股激烈网站 | 亚洲日韩av一区二区三区四区 | 九月婷婷人人澡人人添人人爽 | 丰满人妻精品国产99aⅴ | 九月婷婷人人澡人人添人人爽 | 亚洲人成人无码网www国产 | 国产亚洲精品久久久久久大师 | 国产成人精品优优av | 国产av一区二区三区最新精品 | 2020久久香蕉国产线看观看 | 中国女人内谢69xxxx | 丰满岳乱妇在线观看中字无码 | 成人试看120秒体验区 | 2020久久超碰国产精品最新 | 午夜精品久久久内射近拍高清 | 国产精品亚洲专区无码不卡 | 欧美一区二区三区视频在线观看 | 性欧美牲交在线视频 | 国产99久久精品一区二区 | 亚洲а∨天堂久久精品2021 | 成人欧美一区二区三区黑人免费 | 国产肉丝袜在线观看 | 国产乱人偷精品人妻a片 | 在线视频网站www色 | 中国女人内谢69xxxx | 一区二区三区高清视频一 | 秋霞成人午夜鲁丝一区二区三区 | 成人精品天堂一区二区三区 | 无码国产激情在线观看 | 国产做国产爱免费视频 | 丰满肥臀大屁股熟妇激情视频 | 日本又色又爽又黄的a片18禁 | 成人亚洲精品久久久久软件 | 国产成人精品三级麻豆 | 乱人伦中文视频在线观看 | av无码久久久久不卡免费网站 | 久久国产劲爆∧v内射 | av人摸人人人澡人人超碰下载 | 国产成人综合美国十次 | 亚洲国产精华液网站w | 人妻少妇精品无码专区动漫 | 丰满人妻翻云覆雨呻吟视频 | 久久久久久av无码免费看大片 | 日韩av无码一区二区三区不卡 | 日韩精品无码一区二区中文字幕 | 精品厕所偷拍各类美女tp嘘嘘 | 中文字幕无码av波多野吉衣 | 麻豆国产人妻欲求不满谁演的 | 日本精品少妇一区二区三区 | 色狠狠av一区二区三区 | 国产精品办公室沙发 | 人妻人人添人妻人人爱 | 377p欧洲日本亚洲大胆 | 丰腴饱满的极品熟妇 | 天天摸天天透天天添 | 亚洲成av人片天堂网无码】 | 国产精品久久久久9999小说 | 精品久久久久久人妻无码中文字幕 | 无码一区二区三区在线 | 久久国内精品自在自线 | 国产69精品久久久久app下载 | 成人精品视频一区二区三区尤物 | 熟妇人妻激情偷爽文 | 一本大道久久东京热无码av | 天天爽夜夜爽夜夜爽 | 亚洲成av人影院在线观看 | 国产亚洲tv在线观看 | 少妇人妻av毛片在线看 | 欧美人与禽zoz0性伦交 | 成人毛片一区二区 | 国产午夜无码精品免费看 | 51国偷自产一区二区三区 | 国产区女主播在线观看 | 欧美性黑人极品hd | 欧美35页视频在线观看 | 色欲综合久久中文字幕网 | 国产成人无码av一区二区 | 国产尤物精品视频 | 精品人人妻人人澡人人爽人人 | 欧美三级a做爰在线观看 | 伦伦影院午夜理论片 | 国产成人精品无码播放 | 久久无码专区国产精品s | 99久久婷婷国产综合精品青草免费 | 国产深夜福利视频在线 | 国产乱人偷精品人妻a片 | 欧美一区二区三区 | 成人无码视频免费播放 | 国产精品.xx视频.xxtv | 疯狂三人交性欧美 | 久久精品国产日本波多野结衣 | 美女毛片一区二区三区四区 | 97久久精品无码一区二区 | 少妇高潮喷潮久久久影院 | 免费网站看v片在线18禁无码 | 国产精品久久久一区二区三区 | 精品国偷自产在线视频 | 六月丁香婷婷色狠狠久久 | 免费国产成人高清在线观看网站 | 国产午夜手机精彩视频 | 久久综合给合久久狠狠狠97色 | 老太婆性杂交欧美肥老太 | 欧美精品在线观看 | 亚洲国产一区二区三区在线观看 | 无码人妻精品一区二区三区下载 | 伊人久久大香线蕉av一区二区 | 精品亚洲成av人在线观看 | 久久99精品久久久久久动态图 | 男女爱爱好爽视频免费看 | 久久zyz资源站无码中文动漫 | 免费男性肉肉影院 | 亚洲小说图区综合在线 | 人妻插b视频一区二区三区 | 欧美freesex黑人又粗又大 | 西西人体www44rt大胆高清 | 无码成人精品区在线观看 | 麻豆md0077饥渴少妇 | 亚洲欧洲日本无在线码 | 日韩人妻无码中文字幕视频 | 久久久无码中文字幕久... | 精品一二三区久久aaa片 | 无码av中文字幕免费放 | 国产精品久久久久久久影院 | 国产超级va在线观看视频 | 久久久中文久久久无码 | 免费无码午夜福利片69 | 久久aⅴ免费观看 | 老太婆性杂交欧美肥老太 | 日本乱人伦片中文三区 | 色婷婷香蕉在线一区二区 | 无码人妻出轨黑人中文字幕 | 国产麻豆精品精东影业av网站 | 欧美老妇交乱视频在线观看 | 一个人看的视频www在线 | 亚洲欧美日韩成人高清在线一区 | 国产精品沙发午睡系列 | 波多野结衣 黑人 | 中国大陆精品视频xxxx | 精品水蜜桃久久久久久久 | 亚洲精品综合一区二区三区在线 | 免费中文字幕日韩欧美 | 激情国产av做激情国产爱 | 亚洲一区二区三区香蕉 | 无码国内精品人妻少妇 | 亚洲天堂2017无码中文 | 日韩人妻系列无码专区 | 亚洲一区二区三区香蕉 | 国产无套内射久久久国产 | www国产亚洲精品久久久日本 | 一本久久a久久精品vr综合 | 风流少妇按摩来高潮 | 欧美成人免费全部网站 | 2019nv天堂香蕉在线观看 | 狂野欧美性猛xxxx乱大交 | 夫妻免费无码v看片 | 妺妺窝人体色www婷婷 | 特大黑人娇小亚洲女 |