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

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

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

瀏覽:3日期:2023-04-25 09:43:31

最近一段時(shí)間在研究OAuth2的使用,想整個(gè)單點(diǎn)登錄,從網(wǎng)上找了很多demo都沒有實(shí)施成功,也許是因?yàn)閴焊筒欢甇Auth2的原理導(dǎo)致。有那么幾天,越來(lái)越?jīng)]有頭緒,又不能放棄,轉(zhuǎn)過(guò)頭來(lái)一想,OAuth2是在Security的基礎(chǔ)上擴(kuò)展的,對(duì)于Security自己都是一無(wú)所知,干脆就先研究一下Security吧,先把Security搭建起來(lái),找找感覺。

說(shuō)干就干,在現(xiàn)成的SpringBoot 2.1.4.RELEASE環(huán)境下,進(jìn)行Security的使用。簡(jiǎn)單的Security的使用就不說(shuō)了,目前的項(xiàng)目是前后端分離的,登錄成功或者失敗返回的數(shù)據(jù)格式必須JSON形式的,未登錄時(shí)也需要返回JSON格式的提示信息 ,退出時(shí)一樣需要返回JSON格式的數(shù)據(jù)。授權(quán)先不管,先返回JSON格式的數(shù)據(jù),這一個(gè)搞定,也研究了好幾天,翻看了很多別人的經(jīng)驗(yàn),別人的經(jīng)驗(yàn)有的看得懂,有的看不懂,關(guān)鍵時(shí)刻還需要自己研究呀。

下面,上代碼:

第一步,在pom.xml中引入Security配置文件

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>

第二步,增加Configuration配置文件

import java.io.PrintWriter;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpMethod;import org.springframework.security.authentication.AuthenticationProvider;import org.springframework.security.authentication.BadCredentialsException;import org.springframework.security.authentication.DisabledException;import org.springframework.security.authentication.dao.DaoAuthenticationProvider;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.builders.WebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.core.userdetails.UsernameNotFoundException;import com.fasterxml.jackson.databind.ObjectMapper;/** * 參考網(wǎng)址: * https://blog.csdn.net/XlxfyzsFdblj/article/details/82083443 * https://blog.csdn.net/lizc_lizc/article/details/84059004 * https://blog.csdn.net/XlxfyzsFdblj/article/details/82084183 * https://blog.csdn.net/weixin_36451151/article/details/83868891 * 查找了很多文件,有用的還有有的,感謝他們的辛勤付出 * Security配置文件,項(xiàng)目啟動(dòng)時(shí)就加載了 * @author 程就人生 * */@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private MyPasswordEncoder myPasswordEncoder; @Autowired private UserDetailsService myCustomUserService; @Autowired private ObjectMapper objectMapper; @Override protected void configure(HttpSecurity http) throws Exception { http .authenticationProvider(authenticationProvider()) .httpBasic() //未登錄時(shí),進(jìn)行json格式的提示,很喜歡這種寫法,不用單獨(dú)寫一個(gè)又一個(gè)的類 .authenticationEntryPoint((request,response,authException) -> { response.setContentType('application/json;charset=utf-8'); response.setStatus(HttpServletResponse.SC_FORBIDDEN); PrintWriter out = response.getWriter(); Map<String,Object> map = new HashMap<String,Object>(); map.put('code',403); map.put('message','未登錄'); out.write(objectMapper.writeValueAsString(map)); out.flush(); out.close(); }) .and() .authorizeRequests() .anyRequest().authenticated() //必須授權(quán)才能范圍 .and() .formLogin() //使用自帶的登錄 .permitAll() //登錄失敗,返回json .failureHandler((request,response,ex) -> { response.setContentType('application/json;charset=utf-8'); response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); PrintWriter out = response.getWriter(); Map<String,Object> map = new HashMap<String,Object>(); map.put('code',401); if (ex instanceof UsernameNotFoundException || ex instanceof BadCredentialsException) { map.put('message','用戶名或密碼錯(cuò)誤'); } else if (ex instanceof DisabledException) { map.put('message','賬戶被禁用'); } else { map.put('message','登錄失敗!'); } out.write(objectMapper.writeValueAsString(map)); out.flush(); out.close(); }) //登錄成功,返回json .successHandler((request,response,authentication) -> { Map<String,Object> map = new HashMap<String,Object>(); map.put('code',200); map.put('message','登錄成功'); map.put('data',authentication); response.setContentType('application/json;charset=utf-8'); PrintWriter out = response.getWriter(); out.write(objectMapper.writeValueAsString(map)); out.flush(); out.close(); }) .and() .exceptionHandling() //沒有權(quán)限,返回json .accessDeniedHandler((request,response,ex) -> { response.setContentType('application/json;charset=utf-8'); response.setStatus(HttpServletResponse.SC_FORBIDDEN); PrintWriter out = response.getWriter(); Map<String,Object> map = new HashMap<String,Object>(); map.put('code',403); map.put('message', '權(quán)限不足'); out.write(objectMapper.writeValueAsString(map)); out.flush(); out.close(); }) .and() .logout() //退出成功,返回json .logoutSuccessHandler((request,response,authentication) -> { Map<String,Object> map = new HashMap<String,Object>(); map.put('code',200); map.put('message','退出成功'); map.put('data',authentication); response.setContentType('application/json;charset=utf-8'); PrintWriter out = response.getWriter(); out.write(objectMapper.writeValueAsString(map)); out.flush(); out.close(); }) .permitAll(); //開啟跨域訪問(wèn) http.cors().disable(); //開啟模擬請(qǐng)求,比如API POST測(cè)試工具的測(cè)試,不開啟時(shí),API POST為報(bào)403錯(cuò)誤 http.csrf().disable(); } @Override public void configure(WebSecurity web) { //對(duì)于在header里面增加token等類似情況,放行所有OPTIONS請(qǐng)求。 web.ignoring().antMatchers(HttpMethod.OPTIONS, '/**'); } @Bean public AuthenticationProvider authenticationProvider() { DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); //對(duì)默認(rèn)的UserDetailsService進(jìn)行覆蓋 authenticationProvider.setUserDetailsService(myCustomUserService); authenticationProvider.setPasswordEncoder(myPasswordEncoder); return authenticationProvider; } }

第三步,實(shí)現(xiàn)UserDetailsService接口

import org.springframework.security.core.userdetails.UserDetails;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.core.userdetails.UsernameNotFoundException;import org.springframework.stereotype.Component;/** * 登錄專用類 * 自定義類,實(shí)現(xiàn)了UserDetailsService接口,用戶登錄時(shí)調(diào)用的第一類 * @author 程就人生 * */@Componentpublic class MyCustomUserService implements UserDetailsService { /** * 登陸驗(yàn)證時(shí),通過(guò)username獲取用戶的所有權(quán)限信息 * 并返回UserDetails放到spring的全局緩存SecurityContextHolder中,以供授權(quán)器使用 */ @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //在這里可以自己調(diào)用數(shù)據(jù)庫(kù),對(duì)username進(jìn)行查詢,看看在數(shù)據(jù)庫(kù)中是否存在 MyUserDetails myUserDetail = new MyUserDetails(); myUserDetail.setUsername(username); myUserDetail.setPassword('123456'); return myUserDetail; }}

說(shuō)明:這個(gè)類,主要是用來(lái)接收登錄傳遞過(guò)來(lái)的用戶名,然后可以在這里擴(kuò)展,查詢?cè)撚脩裘跀?shù)據(jù)庫(kù)中是否存在,不存在時(shí),可以拋出異常。本測(cè)試為了演示,把數(shù)據(jù)寫死了。

第四步,實(shí)現(xiàn)PasswordEncoder接口

import org.springframework.security.crypto.password.PasswordEncoder;import org.springframework.stereotype.Component;/** * 自定義的密碼加密方法,實(shí)現(xiàn)了PasswordEncoder接口 * @author 程就人生 * */@Componentpublic class MyPasswordEncoder implements PasswordEncoder { @Override public String encode(CharSequence charSequence) { //加密方法可以根據(jù)自己的需要修改 return charSequence.toString(); } @Override public boolean matches(CharSequence charSequence, String s) { return encode(charSequence).equals(s); }}

說(shuō)明:這個(gè)類主要是對(duì)密碼加密的處理,以及用戶傳遞過(guò)來(lái)的密碼和數(shù)據(jù)庫(kù)密碼(UserDetailsService中的密碼)進(jìn)行比對(duì)。

第五步,實(shí)現(xiàn)UserDetails接口

import java.util.Collection;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.stereotype.Component;/** * 實(shí)現(xiàn)了UserDetails接口,只留必需的屬性,也可添加自己需要的屬性 * @author 程就人生 * */@Componentpublic class MyUserDetails implements UserDetails { /** * */ private static final long serialVersionUID = 1L; //登錄用戶名 private String username; //登錄密碼 private String password; private Collection<? extends GrantedAuthority> authorities; public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setAuthorities(Collection<? extends GrantedAuthority> authorities) { this.authorities = authorities; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { return this.authorities; } @Override public String getPassword() { return this.password; } @Override public String getUsername() { return this.username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; }}

說(shuō)明:這個(gè)類是用來(lái)存儲(chǔ)登錄成功后的用戶數(shù)據(jù),登錄成功后,可以使用下列代碼獲取:

MyUserDetails myUserDetails= (MyUserDetails) SecurityContextHolder.getContext().getAuthentication() .getPrincipal();

代碼寫完了,接下來(lái)需要測(cè)試一下,經(jīng)過(guò)測(cè)試才能證明代碼的有效性,先用瀏覽器吧。

第一步測(cè)試,未登錄前訪問(wèn)index,頁(yè)面直接重定向到默認(rèn)的login頁(yè)面了,測(cè)試接口OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-1

第二步測(cè)試,登錄login后,返回了json數(shù)據(jù),測(cè)試結(jié)果OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-2

第三步測(cè)試,訪問(wèn)index,返回輸出的登錄數(shù)據(jù),測(cè)試結(jié)果OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-3

第四步,訪問(wèn)logout,返回json數(shù)據(jù),測(cè)試接口OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-4

第五步,用API POST測(cè)試,用這個(gè)工具模擬ajax請(qǐng)求,看請(qǐng)求結(jié)果如何,首先訪問(wèn)index,這個(gè)必須登錄后才能訪問(wèn)。測(cè)試結(jié)果ok,返回了我們需要的JSON格式數(shù)據(jù)。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-5

第六步,在登錄模擬對(duì)話框,設(shè)置環(huán)境變量,以保持登錄狀態(tài)。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-6

**第七步,登錄測(cè)試,返回JSON格式的數(shù)據(jù),測(cè)試結(jié)果OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-7

第八步,在返回到index測(cè)試窗口,發(fā)送請(qǐng)求,返回當(dāng)前用戶JSON格式的信息,測(cè)試結(jié)果OK。

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-8

第九步,測(cè)試退出,返回JSON格式數(shù)據(jù),測(cè)試結(jié)果OK

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-9

第十步,退出后,再訪問(wèn)index,出現(xiàn)問(wèn)題,登錄信息還在,LOOK!

SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)

圖-10

把頭部的header前面的勾去掉,也就是去掉cookie,這時(shí)正常了,原因很簡(jiǎn)單,在退出時(shí),沒有清除cookie,這個(gè)只能到正式的環(huán)境上去測(cè)了。API POST再怎么模擬還是和正式環(huán)境有區(qū)別的。

如果在API POST測(cè)試報(bào)403錯(cuò)誤,那就需要把configuration配置文件里的

//開啟跨域訪問(wèn)http.cors().disable();//開啟模擬請(qǐng)求,比如API POST測(cè)試工具的測(cè)試,不開啟時(shí),API POST為報(bào)403錯(cuò)誤http.csrf().disable();

到此這篇關(guān)于SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Security登錄驗(yàn)證內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 黄色一级片看看 | 夜夜骑天天干 | 国产乡下妇女做爰视频 | 不卡视频一区二区三区 | 国产精品一区电影 | 亚洲国产精品一区二区第一页 | 国产美女精品视频免费观看 | 中文字幕在线观看一区二区三区 | 毛片网站大全 | 日韩中文在线播放 | 91精品国产乱码久久久久久久久 | 国产精品久久久久久亚洲调教 | 久久亚洲精品中文字幕 | 在线精品一区二区 | 免费在线日韩 | 久久精品| 日韩1区 | 中文字幕在线第一页 | 亚洲区视频在线 | 色婷婷在线视频观看 | 日本三级中国三级99人妇网站 | 亚洲天堂中文字幕 | 国产在线2 | a免费在线 | 一级毛片免费看 | 国产精品一区二区精品 | 日本成人黄色网址 | 永久免费av | 91欧美在线| 欧美精品在线视频 | av免费看在线 | 九九综合九九 | 一区视频在线 | 欧美国产日韩一区 | 在线免费观看毛片 | √新版天堂资源在线资源 | 国产青青草 | 二区三区在线观看 | 国产欧美精品一区二区三区四区 | 曰批免费视频播放免费 | 精品中文字幕在线观看 | 午夜精品一区二区三区在线观看 | 欧美a区 | 999精品嫩草久久久久久99 | 涩涩视频在线免费看 | 欧美精品在线观看 | 黄色大片免费网址 | 日本黄色a视频 | 中文成人无字幕乱码精品 | 国产精品夜色一区二区三区 | 国产精品久久久久久亚洲调教 | 一区二区三区日本 | 久久不卡日韩美女 | 国产美女视频网站 | 久久久久国产一区二区三区 | 亚洲三级免费观看 | 亚洲欧美一区二区三区在线 | 久久久国产精品 | 欧美性区 | 久久久久一区 | 欧美一区二区三区 | 99精品欧美一区二区蜜桃免费 | 精品91在线 | 亚洲国产二区 | 中文字幕一区二区三区乱码图片 | av网站免费在线 | 五月婷婷狠狠爱 | 国产精品69久久久久水密桃 | 久久亚洲一区二区三区四区 | 亚洲精品乱码久久久久久蜜桃不爽 | 成人av免费观看 | 精品在线一区二区三区 | 懂色一区二区三区av片 | 奇米影视首页 | 婷婷色狠狠 | 亚洲成人一区二区 | 九色在线| 国产精品久久久久久久一区探花 | 久久精品国产99国产 | 国产成人在线免费观看视频 | 国产成人61精品免费看片 | 国产精品香蕉 | 亚洲第一天堂无码专区 | 91春色| 国产精品456在线影视 | 久久99精品久久久久久园产越南 | 日韩av网站在线 | 在线播放国产一区二区三区 | 亚洲精品视频免费看 | 你懂的在线视频播放 | 97色综合 | 欧美日韩一区二区三区在线观看 | 日本好好热视频 | 亚洲高清资源 | 日韩成人小视频 | 91在线精品一区二区 | 波多野结衣一区二区三区中文字幕 | av日韩在线看| 久久久久久久久久久久久av | 国产三区精品 | 免费视频一区二区三区在线观看 | 日韩欧美一区二区三区久久婷婷 | 成人一区二区三区四区 | 日韩不卡一区二区 | 亚洲欧美一区二区精品中文字幕 | 亚洲一区中文字幕永久在线 | 999视频在线| www操com | 成人av网站免费观看 | 精品国产欧美一区二区 | 婷婷激情五月 | 在线色网站 | 免费观看h视频 | 麻豆视频91| 很黄很污的网站 | 91精品久久久久 | 久久99热精品免费观看牛牛 | 亚洲国产精品久久久久 | 黄色免费网站在线看 | 在线播放一级片 | 羞羞视频免费观看入口 | 欧美国产一区二区三区 | 国产一区二区在线播放 | 亚洲综人网 | 久草视频在线播放 | 黄色片视频在线观看 | 日本二区| 国产精品18久久久久久久久久久久 | 男女啪网站 | 二区久久 | a视频在线免费观看 | 亚洲精品9999 | 午夜不卡福利视频 | aaa级片 | 亚洲视频在线免费观看 | 国产极品视频在线观看 | 亚洲视频区 | 操操网站 | 亚洲第一区国产精品 | 中文字幕一区二区三区在线视频 | 国产欧美日韩综合精品一区二区 | 欧美在线观看视频 | 黄a在线 | 国产精品一区二区三区在线免费观看 | 久久三区| 亚洲视频在线观看 | 欧美大片一区二区 | 久在线视频| 亚洲免费a| 一区免费视频 | 精品无码久久久久国产 | 欧美精品日韩 | 国产免费自拍视频 | 亚洲成人久久久 | 中文字幕第二十六页页 | 国产视频1区 | 91精品国产综合久久久久久丝袜 | 天堂中文网官网 | 国产精品久久免费视频 | 天天操天天干天天干 | 特级生活片 | 亚洲国产婷婷香蕉久久久久久99 | 精品一区二区三区在线视频 | 理伦影院 | 久久国产精品久久久久久电车 | 亚洲成人在线视频观看 | 天天天干夜夜夜操 | 亚洲免费资源 | 操她视频网站 | 成人午夜视频在线观看 | 亚洲欧美日韩在线一区 | 欧美成人一区二区三区片免费 | 久久久综合网 | 精品国产一区二区在线 | 成人片免费看 | 欧美另类一区二区 | 久久91视频 | 日日操天天爽 | 免费观看一级毛片 | 国产精品国产精品国产专区不片 | 色av综合| 99精品九九 | 91久久国产综合久久 | 中文字幕一区二区三区乱码在线 | 日本a在线| 亚洲污视频 | 波多野结衣一区二区三区四区 | 亚洲国产成人av | 中文一区 | 在线观看国产精品一区二区 | 欧美福利一区二区 | 欧美一区二区三区免费 | 91精品国产乱码久久蜜臀 | 97久久超碰| 精品国产乱码久久久久久88av | 欧美午夜在线观看 | 午夜大片网 | 亚洲国产高清高潮精品美女 | 亚洲三区在线观看 | 91色乱码一区二区三区 | 成年人网站免费在线观看 | 成人久久久精品乱码一区二区三区 | 国产精品伦一区二区三级视频 | 青青草久久 | 黄色网址av | 成人精品视频一区二区三区 | 国产免费拔擦拔擦8x高清在线人 | 久久久久国产成人精品亚洲午夜 | 国产亚洲精品美女久久久久久久久久 | 欧美寡妇偷汉性猛交 | 国产精品99久久免费观看 | 男人天堂网站 | 欧美亚洲免费 | 青草成人免费视频 | 美女视频黄的免费 | 亚洲女人天堂网 | av在线免费观看网站 | 日本在线小视频 | 免费h| 97超碰在线免费 | 99精品久久久久久久免费看蜜月 | 国产自产才c区 | 天堂一区二区三区在线 | 中文字幕免费看 | av中文字幕在线观看 | 亚洲电影一区二区 | 密色视频 | 小草av | 97久久久| 黄色国产| 国产欧美日韩综合精品一区二区 | 亚洲一区二区在线看 | 在线观看欧美成人 | 国产精品一区二区av | 中文av网站 | 欧美日在线 | 午夜视频精品 | 呦一呦二在线精品视频 | 国产精品日产欧美久久久久 | 国产精品成人在线观看 | 亚洲综合视频 | 中文字幕91 | 国产在线小视频 | 中文字幕在线视频一区 | 中文字幕亚洲字幕一区二区 | 久操伊人 | 日韩成人免费在线 | 综合久久99 | 99精品视频在线观看 | 无毒黄网 | 午夜精品久久久久久99热软件 | 久久99精品久久久久久久青青日本 | 91电影在线观看 | 欧美福利在线观看 | 99热在线观看免费 | 久久综合九色综合欧美狠狠 | 日韩成人在线视频 | 六月丁香啪啪 | 久草.com| 中文字幕一区二区三区在线视频 | 日韩一及片 | 免费的av网站 | 欧美夜夜骑 | 国产精品成人观看视频国产奇米 | 日韩视频欧美视频 | 国产欧美日韩综合精品 | 美日韩精品视频 | 国产精品无码久久久久 | 一区二区三区观看视频 | 久久福利电影 | 午夜精品久久久久久久久久久久 | 国产午夜精品久久久久免费视高清 | 国产精品久久久久影院色老大 | 特黄视频| 日韩视频在线观看视频 | 狠狠躁夜夜躁人人爽天天高潮 | 久久久性色精品国产免费观看 | 国产精品久久免费观看spa | 欧美精品网 | 亚洲 中文 欧美 日韩 在线观看 | 毛片毛片毛片毛片毛片毛片 | 精品国产乱码久久久久久1区2区 | 999成人网 | 亚洲免费在线视频 | 色站综合| 欧美亚洲一区 | 天天插天天 | 日韩精品在线视频 | 日本久久久久久久 | 男女视频免费 | 黄版视频在线观看 | 国产日韩一区二区三区 | 91aiai| 在线播放亚洲 | 国产视频久久 | 国产视频精品在线观看 | 亚洲精品午夜aaa久久久 | 日韩中文字幕在线免费 | 亚洲精品区 | 日韩视频一区二区三区 | 九一亚洲精品 | 深夜av在线 | 国产精品成人在线观看 | 天天插天天干 | 久草色视频在线观看 | 中文字幕欧美日韩 | 国产日韩一区二区 | 亚洲精品99| 日韩欧美一区二区三区视频 | 美女一区 | 毛片a在线 | 成人免费毛片高清视频 | 四季久久免费一区二区三区四区 | 国厂黄色片 | 成人欧美在线视频 | 日韩小视频在线播放 | 国产视频中文字幕 | 精品久久久久久久久久久久 | 日韩a∨精品日韩在线观看 山岸逢花在线 | 欧美a一级| 精品久久久久久久久久久久 | 在线观看亚洲精品视频 | 在线亚洲不卡 | 成人免费一区二区三区视频网站 | 亚洲国产精品久久久男人的天堂 | 精品日韩中文字幕 | 日本一区二区不卡视频 | 国产精品视频一区二区三区 | 一级毛片免费看 | 国产精品一码二码三码在线 | 在线视频中文字幕 | 日韩成人av在线 | 中文字幕在线一区 | 精品久久久久久久久久久久 | 成人免费视频网址 | 羞羞在线视频 | 亚洲aⅴ| 精品xxxx户外露出视频 | 欧美日韩精品一区二区 | 看av网站| 日韩国产精品一区二区 | 久久综合一区 | 久久久久久91香蕉国产 | 国产日韩视频 | 精品成人佐山爱一区二区 | 日韩在线视频观看 | 午夜免费视频 | 日本特黄特色aaa大片免费 | 亚洲国产精品一区 | 欧美中文字幕在线 | 国产一级一级特黄女人精品毛片 | 最新av网址大全 | 国产精品午夜电影 | 欧美a区| caoporn免费在线视频 | 国产精品久久久久久久久久久小说 | 亚洲视频免费在线 | 亚洲欧美国产精品久久 | av中文字幕在线播放 | 黄色免费网址大全 | 一级片在线免费观看视频 | 黄色视频a级毛片 | 日韩精品| 欧美精品三区 | 免费在线看a | 国产精品一区av | av毛片| 欧美视频免费在线 | 青娱乐国产精品视频 | 日日干夜夜骑 | 97国产一区二区精品久久呦 | 精品99免费 | 成人国产精品色哟哟 | 亚洲精品久久久久久久久久久久久 | 国产97人人超碰caoprom | 亚洲精品视频国产 | 国产精品久久久久久福利一牛影视 | 欧洲免费av | 特一级毛片 | 天天天插 | 久久精品视 | 国产精品高潮呻吟av久久4虎 | 久久精品色欧美aⅴ一区二区 | 特级毛片 | 欧美日韩免费在线 | 欧美一区二区三区xxxx监狱 | 亚洲一区在线日韩在线深爱 | 精品国产一区二区三区久久影院 | 国产成人午夜精品影院游乐网 | 超碰在线一区二区三区 | www.夜夜骑| 国产日韩一区二区 | 免费久久99精品国产婷婷六月 | 国产乱码精品一区二区三区av | 一区二区三区日韩 | 极品久久 | 日韩中文在线观看 | 夜久久| 免费看91 | 老司机福利在线视频 | 日本私人网站在线观看 | 久久99精品久久久久久久青青日本 | 在线播放国产一区二区三区 | 中文字幕精品一区 | 久久av一区二区三区亚洲 | 婷婷综合激情 | 国产成人精品久久久 | 天天舔天天干天天操 | 亚洲精品久久久一区二区三区 | 我要看免费黄色片 | 欧美精品一区二区三区四区 | 国产精品久久久久久久久久免费看 | 亚洲欧美在线一区 | 亚洲高清视频在线观看 | 亚洲国产成人精品女人久久久 | 男人的天堂中文字幕 | av福利网站 | 国产一级片 | 免费看的av| 日韩精品www | 久久69 | 久久久精彩视频 | 国产激情一区二区三区成人免费 | 亚洲免费在线播放 | 91久久夜色精品国产九色 | 中文字幕成人av | 一级全黄少妇性色生活片毛片 | 色婷婷综合在线视频 | 韩国电影久久影院 | 亚洲精品福利在线观看 | 欧美日韩激情一区二区三区 | 99久久九九| 操操操操操 | 国精产品一区二区三区黑人免费看 | www国产亚洲精品久久网站 | 99精品一区 | 亚洲精品久久久久avwww潮水 | 呦一呦二在线精品视频 | 久久一区| 欧美日韩国产精品一区 | 免费av在线网站 | 成人免费一区二区三区视频网站 | а√天堂资源中文最新版地址 | 精品国产一区二区三区久久久蜜 | 日韩快播电影 | 亚洲精区| 国产精品二区一区二区aⅴ污介绍 | 国产精品久久久久国产精品 | 5060毛片| 亚洲欧美网址 | 一区二区精品视频在线观看 | 免费看黄色大片 | 91精品国产综合久久福利软件 | 日韩精品在线观看视频 | 亚洲久久久 | 日本视频二区 | 在线视频中文字幕 | 亚洲成人一区二区 | 欧美成人精品一区二区三区在线看 | 91精品国产综合久久久久久软件 | 久久久久久婷婷 | 国产精品中文字幕在线 | 亚洲精品在线看 | 欧美日韩成人一区 | 欧美成人h版在线观看 | 亚洲精品国产a久久久久久 国产毛片毛片 | av毛片在线免费看 | 国产精品久久久久一区二区三区共 | 欧美日韩亚洲一区二区 | 色精品| 亚洲h网站 | 在线亚洲欧美 | 久久久久久91 | 天天天天综合 | 久久人人爽人人爽人人片亚洲 | 成人三级av | 国产aⅴ一区二区 | 欧美激情综合五月色丁香小说 | 日本精品一区二区在线观看 | 91免费观看视频 | 免费黄色网址在线播放 | 欧美亚洲日本 | 一二三四区视频在线观看 | 欧美自拍视频在线观看 | 国产亚洲欧美一区 | 亚洲精品一区二区另类图片 | 一区二区中文字幕 | 国产在线拍揄自揄拍视频 | 一区二区三区视频免费在线观看 | 国产精品久久免费看 | 国产精品永久在线 | 欧美一级艳情片免费观看 | 一区二区三区四区在线 | 伊人精品视频在线观看 | 中文字幕在线观看av | 亚洲精品无 | 久久综合一区二区 | 伊人久久爱 | 国产日韩欧美综合 | 国产日韩精品视频 | 激情综合色综合久久综合 | 亚洲综合大片69999 | 国产精品视频导航 | 午夜不卡福利视频 | 狠狠的日 | 操操网站| 91精品在线播放 | 中文字幕在线免费看 | 亚洲高清不卡视频 | 欧美亚洲国产一区 | 欧美精品网站 | 影音先锋亚洲资源 | 亚洲丶国产丶欧美一区二区三区 | 黄色一级片看看 | 国产91富婆养生按摩会所 | 国产精品久热 | 国产成人av一区二区三区 | 亚洲国产精品人人爽夜夜爽 | 亚洲乱码一区二区 | 成人免费视频网站在线看 | 精品福利在线视频 | 亚洲高清av在线 | 国产依人在线 | 国产一区二区综合 | 亚洲a视频 | 天天干国产| 日韩成人在线电影 | √新版天堂资源在线资源 | 999国产在线| 久久涩| 精品久久av | 99热日本 | 三级成人在线 | 久久久久久成人 | 久久99视频 | 91视频在线| 成人日韩在线观看 | 日韩亚洲精品在线观看 | 国产精品美女久久久 | 欧美精品一区二区三区手机在线 | 国产偷国产偷精品高清尤物 | 国产精品久久免费视频 | 国产视频久久 | 国产成人啪精品午夜在线观看 | 男女羞羞视频网站 | 欧美| 99久精品| 国产日韩一区二区三区 | 国产一区二区精品 | 亚洲国产天堂久久综合 | 欧美一区二区三区视频 | 日本综合色 | 在线一区观看 | 午夜a级理论片915影院 | 久久久999国产 | 久久精品免费看 | 久久精品欧美一区二区三区不卡 | 黄色国产精品 | 亚洲一区二区三区免费观看 | 一区二区三区精品 | 日本伊人网站 | 久久久国产一区二区三区四区小说 | 日本久久精品一区二区 | 亚洲午夜在线 | 亚洲视频免费在线观看 | 日韩视频中文字幕 | 狠久久| 97色在线视频| 美女黄网| 国产精品久久久久久久久久久久 | 中文字幕精品一区二区三区精品 | 91在线高清观看 | 中文字幕91视频 | 国产精品香蕉 | 极品毛片| 伊人狠狠干 | 中文字幕三区 | 日韩国产一区 | 成人精品网站在线观看 | 97久久精品午夜一区二区 | 爱干视频| 国产精品国产三级国产a | 日韩成人在线观看 | 黄色毛片av| 国产精品视频一区二区三区四 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 精品免费视频一区二区 | av大片 | 国产成人精品一区二区三区视频 | 日本另类αv欧美另类aⅴ | 伊人超碰| 成人欧美在线视频 | 国产人妖一区二区 | 成人精品久久久 | 91视频精选 | 日韩在线免费 | 久久精品亚洲一区二区 | 仙人掌旅馆在线观看 | 夜久久| 成人欧美一区二区三区黑人孕妇 | 精品一区二区久久久久久久网站 | 国产精品久久久999 成人亚洲视频 | 日韩在线免费电影 | 国产一区二区精品 | a级性生活 | 成人免费视频网站在线看 | 天天艹逼| 色婷婷在线视频观看 | 日韩中文字幕在线观看 | 午夜视频网 | 国产成人在线免费观看视频 | 久草久草久草 | 久久成人免费观看 | 成人欧美一区二区三区在线观看 | 亚洲第一av|