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

您的位置:首頁技術文章
文章詳情頁

Spring security 自定義過濾器實現Json參數傳遞并兼容表單參數(實例代碼)

瀏覽:110日期:2023-07-25 09:43:00

依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>配置安全適配類

基本配置和配置自定義過濾器

package com.study.auth.config.core; import com.study.auth.config.core.authentication.AccountAuthenticationProvider;import com.study.auth.config.core.authentication.MailAuthenticationProvider;import com.study.auth.config.core.authentication.PhoneAuthenticationProvider;import com.study.auth.config.core.filter.CustomerUsernamePasswordAuthenticationFilter;import com.study.auth.config.core.handler.CustomerAuthenticationFailureHandler;import com.study.auth.config.core.handler.CustomerAuthenticationSuccessHandler;import com.study.auth.config.core.handler.CustomerLogoutSuccessHandler;import com.study.auth.config.core.observer.CustomerUserDetailsService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;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.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; /** * @Package: com.study.auth.config * @Description: <> * @Author: milla * @CreateDate: 2020/09/04 11:27 * @UpdateUser: milla * @UpdateDate: 2020/09/04 11:27 * @UpdateRemark: <> * @Version: 1.0 */@Slf4j@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private AccountAuthenticationProvider provider; @Autowired private MailAuthenticationProvider mailProvider; @Autowired private PhoneAuthenticationProvider phoneProvider; @Autowired private CustomerUserDetailsService userDetailsService; @Autowired private CustomerAuthenticationSuccessHandler successHandler; @Autowired private CustomerAuthenticationFailureHandler failureHandler; @Autowired private CustomerLogoutSuccessHandler logoutSuccessHandler; /** * 配置攔截器保護請求 * * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { //配置HTTP基本身份驗證//使用自定義過濾器-兼容json和表單登錄 http.addFilterBefore(customAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class).httpBasic().and().authorizeRequests()//表示訪問 /setting 這個接口,需要具備 admin 這個角色.antMatchers('/setting').hasRole('admin')//表示剩余的其他接口,登錄之后就能訪問.anyRequest().authenticated().and().formLogin()//定義登錄頁面,未登錄時,訪問一個需要登錄之后才能訪問的接口,會自動跳轉到該頁面.loginPage('/noToken')//登錄處理接口-登錄時候訪問的接口地址.loginProcessingUrl('/account/login')//定義登錄時,表單中用戶名的 key,默認為 username.usernameParameter('username')//定義登錄時,表單中用戶密碼的 key,默認為 password.passwordParameter('password')////登錄成功的處理器//.successHandler(successHandler)////登錄失敗的處理器//.failureHandler(failureHandler)//允許所有用戶訪問.permitAll().and().logout().logoutUrl('/logout')//登出成功的處理.logoutSuccessHandler(logoutSuccessHandler).permitAll(); //關閉csrf跨域攻擊防御 http.csrf().disable(); } /** * 配置權限認證服務 * * @param auth * @throws Exception */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { //權限校驗-只要有一個認證通過即認為是通過的(有一個認證通過就跳出認證循環)-適用于多登錄方式的系統// auth.authenticationProvider(provider);// auth.authenticationProvider(mailProvider);// auth.authenticationProvider(phoneProvider); //直接使用userDetailsService auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder()); } /** * 配置Spring Security的Filter鏈 * * @param web * @throws Exception */ @Override public void configure(WebSecurity web) throws Exception { //忽略攔截的接口 web.ignoring().antMatchers('/noToken'); } /** * 指定驗證manager * * @return * @throws Exception */ @Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } /** * 注冊自定義的UsernamePasswordAuthenticationFilter * * @return * @throws Exception */ @Bean public AbstractAuthenticationProcessingFilter customAuthenticationFilter() throws Exception { AbstractAuthenticationProcessingFilter filter = new CustomerUsernamePasswordAuthenticationFilter(); filter.setAuthenticationSuccessHandler(successHandler); filter.setAuthenticationFailureHandler(failureHandler); //過濾器攔截的url要和登錄的url一致,否則不生效 filter.setFilterProcessesUrl('/account/login'); //這句很關鍵,重用WebSecurityConfigurerAdapter配置的AuthenticationManager,不然要自己組裝AuthenticationManager filter.setAuthenticationManager(authenticationManagerBean()); return filter; }}自定義過濾器

根據ContentType是否為json進行判斷,如果是就從body中讀取參數,進行解析,并生成權限實體,進行權限認證

否則直接使用UsernamePasswordAuthenticationFilter中的方法

package com.study.auth.config.core.filter; import com.fasterxml.jackson.databind.ObjectMapper;import com.study.auth.config.core.util.AuthenticationStoreUtil;import com.study.auth.entity.bo.LoginBO;import lombok.extern.slf4j.Slf4j;import org.springframework.http.MediaType;import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;import org.springframework.security.core.Authentication;import org.springframework.security.core.AuthenticationException;import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.InputStream; /** * @Package: com.study.auth.config.core.filter * @Description: <> * @Author: milla * @CreateDate: 2020/09/11 16:04 * @UpdateUser: milla * @UpdateDate: 2020/09/11 16:04 * @UpdateRemark: <> * @Version: 1.0 */@Slf4jpublic class CustomerUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter { /** * 空字符串 */ private final String EMPTY = ''; @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { //如果不是json使用自帶的過濾器獲取參數 if (!request.getContentType().equals(MediaType.APPLICATION_JSON_UTF8_VALUE) && !request.getContentType().equals(MediaType.APPLICATION_JSON_VALUE)) { String username = this.obtainUsername(request); String password = this.obtainPassword(request); storeAuthentication(username, password); Authentication authentication = super.attemptAuthentication(request, response); return authentication; } //如果是json請求使用取參數邏輯 ObjectMapper mapper = new ObjectMapper(); UsernamePasswordAuthenticationToken authRequest = null; try (InputStream is = request.getInputStream()) { LoginBO account = mapper.readValue(is, LoginBO.class); storeAuthentication(account.getUsername(), account.getPassword()); authRequest = new UsernamePasswordAuthenticationToken(account.getUsername(), account.getPassword()); } catch (IOException e) { log.error('驗證失敗:{}', e); authRequest = new UsernamePasswordAuthenticationToken(EMPTY, EMPTY); } finally { setDetails(request, authRequest); Authentication authenticate = this.getAuthenticationManager().authenticate(authRequest); return authenticate; } } /** * 保存用戶名和密碼 * * @param username 帳號/郵箱/手機號 * @param password 密碼/驗證碼 */ private void storeAuthentication(String username, String password) { AuthenticationStoreUtil.setUsername(username); AuthenticationStoreUtil.setPassword(password); }}

其中會有body中的傳參問題,所以使用ThreadLocal傳遞參數

PS:枚舉類具備線程安全性

package com.study.auth.config.core.util; /** * @Package: com.study.auth.config.core.util * @Description: <使用枚舉可以保證線程安全> * @Author: milla * @CreateDate: 2020/09/11 17:48 * @UpdateUser: milla * @UpdateDate: 2020/09/11 17:48 * @UpdateRemark: <> * @Version: 1.0 */public enum AuthenticationStoreUtil { AUTHENTICATION; /** * 登錄認證之后的token */ private final ThreadLocal<String> tokenStore = new ThreadLocal<>(); /** * 需要驗證用戶名 */ private final ThreadLocal<String> usernameStore = new ThreadLocal<>(); /** * 需要驗證的密碼 */ private final ThreadLocal<String> passwordStore = new ThreadLocal<>(); public static String getUsername() { return AUTHENTICATION.usernameStore.get(); } public static void setUsername(String username) { AUTHENTICATION.usernameStore.set(username); } public static String getPassword() { return AUTHENTICATION.passwordStore.get(); } public static void setPassword(String password) { AUTHENTICATION.passwordStore.set(password); } public static String getToken() { return AUTHENTICATION.tokenStore.get(); } public static void setToken(String token) { AUTHENTICATION.tokenStore.set(token); } public static void clear() { AUTHENTICATION.tokenStore.remove(); AUTHENTICATION.passwordStore.remove(); AUTHENTICATION.usernameStore.remove(); }}實現UserDetailsService接口

package com.study.auth.config.core.observer; import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.security.core.userdetails.User;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.core.userdetails.UsernameNotFoundException;import org.springframework.security.crypto.password.PasswordEncoder;import org.springframework.stereotype.Component; /** * @Package: com.study.auth.config.core * @Description: <自定義用戶處理類> * @Author: milla * @CreateDate: 2020/09/04 13:53 * @UpdateUser: milla * @UpdateDate: 2020/09/04 13:53 * @UpdateRemark: <> * @Version: 1.0 */@Slf4j@Componentpublic class CustomerUserDetailsService implements UserDetailsService { @Autowired private PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //測試直接使用固定賬戶代替 return User.withUsername('admin').password(passwordEncoder.encode('admin')).roles('admin', 'user').build(); }} 登錄成功類

package com.study.auth.config.core.handler; import org.springframework.security.core.Authentication;import org.springframework.security.web.authentication.AuthenticationSuccessHandler;import org.springframework.stereotype.Component; import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException; /** * @Package: com.study.auth.config.core.handler * @Description: <登錄成功處理類> * @Author: milla * @CreateDate: 2020/09/08 17:39 * @UpdateUser: milla * @UpdateDate: 2020/09/08 17:39 * @UpdateRemark: <> * @Version: 1.0 */@Componentpublic class CustomerAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { HttpServletResponseUtil.loginSuccess(response); }} 登錄失敗

package com.study.auth.config.core.handler; import org.springframework.security.core.AuthenticationException;import org.springframework.security.web.authentication.AuthenticationFailureHandler;import org.springframework.stereotype.Component; import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException; /** * @Package: com.study.auth.config.core.handler * @Description: <登錄失敗操作類> * @Author: milla * @CreateDate: 2020/09/08 17:42 * @UpdateUser: milla * @UpdateDate: 2020/09/08 17:42 * @UpdateRemark: <> * @Version: 1.0 */@Componentpublic class CustomerAuthenticationFailureHandler implements AuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { HttpServletResponseUtil.loginFailure(response, exception); }} 登出成功類

package com.study.auth.config.core.handler; import org.springframework.security.core.Authentication;import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;import org.springframework.stereotype.Component; import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException; /** * @Package: com.study.auth.config.core.handler * @Description: <登出成功> * @Author: milla * @CreateDate: 2020/09/08 17:44 * @UpdateUser: milla * @UpdateDate: 2020/09/08 17:44 * @UpdateRemark: <> * @Version: 1.0 */@Componentpublic class CustomerLogoutSuccessHandler implements LogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { HttpServletResponseUtil.logoutSuccess(response); }}返回值工具類

package com.study.auth.config.core.handler; import com.alibaba.fastjson.JSON;import com.study.auth.comm.ResponseData;import com.study.auth.constant.CommonConstant;import org.springframework.http.MediaType;import org.springframework.security.core.AuthenticationException; import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter; /** * @Package: com.study.auth.config.core.handler * @Description: <> * @Author: milla * @CreateDate: 2020/09/08 17:45 * @UpdateUser: milla * @UpdateDate: 2020/09/08 17:45 * @UpdateRemark: <> * @Version: 1.0 */public final class HttpServletResponseUtil { public static void loginSuccess(HttpServletResponse resp) throws IOException { ResponseData success = ResponseData.success(); success.setMsg('login success'); response(resp, success); } public static void logoutSuccess(HttpServletResponse resp) throws IOException { ResponseData success = ResponseData.success(); success.setMsg('logout success'); response(resp, success); } public static void loginFailure(HttpServletResponse resp, AuthenticationException exception) throws IOException { ResponseData failure = ResponseData.error(CommonConstant.EX_RUN_TIME_EXCEPTION, exception.getMessage()); response(resp, failure); } private static void response(HttpServletResponse resp, ResponseData data) throws IOException { //直接輸出的時候還是需要使用UTF-8字符集 resp.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); PrintWriter out = resp.getWriter(); out.write(JSON.toJSONString(data)); out.flush(); }}

其他對象見Controller 層返回值的公共包裝類-避免每次都包裝一次返回-InitializingBean增強

至此,就可以傳遞Json參數了

Spring security 自定義過濾器實現Json參數傳遞并兼容表單參數(實例代碼)

到此這篇關于Spring security 自定義過濾器實現Json參數傳遞并兼容表單參數的文章就介紹到這了,更多相關Spring security 自定義過濾器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产精品久久影院 | 成人午夜| 久草视频免费在线播放 | 婷婷色狠狠 | av在线精品 | 在线观看亚洲一区二区三区 | 亚洲视频一区二区三区 | 午夜精品久久久久久久星辰影院 | 日韩视频在线一区二区 | 资源av| 中文字幕欧美在线观看 | 国产中文字幕一区 | 91中文字幕在线 | 亚洲色图88 | 欧美视频免费看 | 欧美成年黄网站色视频 | 嫩草视频网 | 99国产精品久久久 | 美女操网站 | av在线精品| 在线观看免费av网站 | 黑人粗黑大躁护士 | 日韩特级 | 成人免费一区二区三区视频网站 | 人人做人人爽 | 精品美女久久久 | 亚洲日韩中文字幕一区 | 久久精品成人一区二区三区蜜臀 | 国产日韩欧美视频 | 亚洲欧美日韩精品久久奇米色影视 | 国产 高清 在线 | 亚欧洲精品视频在线观看 | 国产精品久久久久久久久免费丝袜 | 国产在线观看免费 | 中国女人黄色大片 | 亚洲精品在线播放 | 精品二区 | 黄色毛片在线观看 | 日韩精品一区二区三区中文在线 | 高清国产一区二区三区四区五区 | 国产精品国产三级国产aⅴ原创 | 国产成人精品高清久久 | ririsao久久精品一区 | 不卡在线一区 | 夜夜骑天天射 | 涩涩视频观看 | 一区二区三区日韩在线 | 经典法国性xxxx精品 | 久久女人 | 国产艳妇av视国产精选av一区 | 狠狠的日| 欧美日韩中文字幕 | 91免费版在线观看 | 国产一级片儿 | 国产一级黄色大片 | 国产一区二区视频免费 | 久久久久9999国产精品 | 久久久久综合 | 欧美三级电影在线播放 | 欧美日韩亚| 午夜精品一区二区三区在线观看 | 久久se精品一区精品二区 | 亚洲精品一区二三区不卡 | 亚洲精品久久久久久久久久久 | 91精品国产综合久久国产大片 | 国产精品1区2区3区 国产在线观看一区 | 精品一区不卡 | 99国产精品久久久久久久久久 | 亚洲 欧美 日韩在线 | 日韩成人在线一区 | 欧美一级免费看 | 99久久99久久 | 免费大片在线观看网站 | 欧美一级片免费观看 | 国产亚洲一区二区三区在线 | 国产精品热 | 天堂色网 | 亚洲久久久 | 国产乱码精品1区2区3区 | 啊啊啊网站| 少妇黄色一级片 | 成人欧美一区二区三区黑人孕妇 | 国产免费一级特黄录像 | 国产日韩91| 伊人免费视频 | 精品国产一区二区三区久久影院 | 日本一区二区成人 | 亚洲精品一区二区三区在线 | 欧美一区二区三区在线观看视频 | 成年人在线观看视频 | 国产中文在线播放 | 一级国产视频 | 一区二区视频在线观看 | 亚洲视频自拍 | 久久伊人免费视频 | 一区二区三区在线观看免费 | 日韩精品999 | 亚洲精品久久久久avwww潮水 | 欧美激情网 | 精品国产髙清在线看国产毛片 | 久久99这里只有精品 | 欧美日韩精品一区二区 | 国产中文字幕在线观看 | 日韩av高清在线 | 成人h在线| 男人视频网站 | 久久精品国产精品青草 | 色狠狠一区 | 高清三区 | 亚洲国产成人在线 | 欧美日韩中文字幕在线播放 | 黄色四虎| 91小视频 | 九九热免费精品视频 | 国产丝袜一区二区三区免费视频 | 精品日韩欧美一区二区三区 | 亚洲一区不卡 | 国产精品影院在线观看 | 成人福利网 | 亚洲成人精品在线 | 色婷婷国产精品综合在线观看 | 国产精品成人久久久久 | 国产视频91在线 | 国产一区二区精品久久岳 | 欧美一级片在线观看 | 日本综合久久 | 日韩中文字幕一区二区 | 国产美女自拍视频 | 伦理午夜电影免费观看 | 在线观看亚洲一区 | 中文字幕日韩一区 | 欧美视频免费看 | av日韩在线播放 | 亚洲国产精品第一区二区 | 欧美一级淫片免费看 | 精品视频99| 久久久91 | 91在线入口| 精品一区二区三区免费 | 日韩精品在线视频 | 日韩av网页 | 亚洲一本 | 国产精品地址 | 亚洲毛片网站 | av三级 | 国产精品www | 北条麻妃99精品青青久久 | 亚洲一区二区福利 | 成人国产精品久久 | 九九热这里只有精 | 精品综合久久 | 亚洲电影二区 | 一区二区亚洲视频 | 国产亚洲精品久久久久久久 | 91亚洲精品乱码久久久久久蜜桃 | 中文字字幕一区二区三区四区五区 | 午夜免费电影 | 国产精品久久久久久吹潮 | 亚洲另类视频 | 国产欧美精品区一区二区三区 | 久久com| 艳妇荡乳豪妇荡淫 | 国产第一亚洲 | 午夜精品一区二区三区在线视频 | 久久久免费看 | 韩日精品 | 成人综合网站 | 亚洲视频在线播放 | 一区二区三区四区视频 | 日韩国产一区 | 欧美日韩中文 | 免费成人在线网站 | 久久99精品视频 | 99在线视频精品 | 精品国产髙清在线看国产毛片 | 91久久夜色精品国产网站 | 亚洲美女在线视频 | 亚洲午夜精品一区二区三区 | 亚洲高清视频在线 | 久久免费精品 | 蜜桃av一区二区三区 | 国产成人精品免高潮在线观看 | 日韩成人在线免费视频 | 国产91久久久 | 亚洲精品亚洲人成人网 | 999久久国产| 欧美一区二区三区在线视频观看 | 久久久精品影院 | www.久久久.com | 免费精品 | 不卡在线 | 日韩中文字幕在线看 | 国产香蕉视频在线播放 | 午夜小电影 | 国产成人免费视频网站视频社区 | 午夜久久久 | 久久久久久成人 | 一区二区三区 在线 | 大香一网| 四虎永久免费影视 | 日韩在线欧美 | 日韩精品一区二区三区中文在线 | 免费视频一区二区三区在线观看 | 国产欧美精品 | 久久视频在线看 | 国产三区在线观看视频 | 99精品免费视频 | 先锋久久 | 日韩视频精品在线 | 亚洲视频在线观看免费 | 99久久免费精品国产男女性高好 | 午夜影院在线免费观看 | 亚洲成人精品 | 国产小视频在线观看 | 日韩1区| 欧美日韩免费在线 | 欧美精品一区二区三区免费视频 | 毛片久久久 | av免费在线观看网址 | 日韩国产在线播放 | 国产精品视频一区二区免费不卡 | 欧美精品一区二区三区免费视频 | 国产精品123 | 日韩午夜一级片 | 亚洲精品国产剧情久久9191 | 在线免费观看黄色 | 丁香婷婷久久久综合精品国产 | 免费黄色欧美 | 亚洲情视频| 羞羞视频在线观免费观看 | 中文字幕一区二区三 | 在线观看国产小视频 | 国产一区免费在线观看 | 男人天堂网址 | 精品一区二区电影 | 精品一区二区av | 欧美一级爆毛片 | 成人精品一区二区三区 | 欧美日韩久久精品 | 欧美在线视频三区 | 超碰人人爽 | 欧美在线a | 自拍偷拍99 | www.亚洲一区二区 | 久久国产精品毛片 | 亚洲精品一区二区在线 | 一道本一区 | 日韩小视频在线播放 | 欧美日韩视频网站 | 国产精品久久久久永久免费观看 | 天天久久| 91亚洲精品久久久 | 欧美hdfree性xxxx| 亚洲精品久久久久久一区二区 | 久久久久久毛片免费观看 | 日本久久精品视频 | 毛片com| 91色视频在线观看 | 岛国av在线 | 国内精品在线视频 | 欧美暴操| 欧美激情一区二区三级高清视频 | 不卡一区二区三区四区 | 欧美日韩中文在线观看 | 欧美视频亚洲视频 | 成人h视频在线观看 | 欧美成人免费 | 人人射人人草 | 中文字幕成人av | aaaaaa毛片| 国产成人免费 | 亚洲一区二区三区四区 | 亚洲视频在线一区 | 欧美日韩在线一区二区三区 | 日日干天天操 | 国产精品久久久久久久久久久久 | 国产毛片毛片 | 在线国产一区二区 | 九色在线| 久久久精品一区二区 | 一二三区av | 日韩成人tv | 成人性视频免费网站 | 国产成人av电影 | 亚洲精品久久久久久久久久久 | 成人免费影院 | 中文字幕最新在线 | 免费毛片大全 | 国产精品久久久久久福利一牛影视 | 欧美日韩国产在线观看 | 日韩成人高清视频 | 久久伊人免费视频 | 色免费在线观看 | 一区二区三区久久久久久 | 黄色国产一级片 | 欧美一区二区免费在线 | 欧美一区二| 成人一级 | 日本免费黄色 | 一级做a爰性色毛片免费1 | 国产成人精品在线 | 日韩在线免费观看视频 | 亚洲日本乱码在线观看 | 国产精品久久久久久吹潮 | 亚洲第一色| 二区视频 | 亚洲精品亚洲人成人网 | 欧美日韩精品 | 四色成人av永久网址 | 久久生活片 | 狠狠综合久久 | 亚洲精品成人网 | 九九久久精品视频 | 欧美 日韩 国产 成人 在线 | 成人午夜视频在线观看 | 性视频网站免费 | www.日韩.com| 久久精品福利 | 黄a免费 | 一级黄色片网站 | 81精品国产乱码久久久久久 | 日韩不卡一区二区 | 一级欧美日韩 | 天天天干天天射天天天操 | 日本久久网 | 国产精品网站在线看 | 久久久久久久成人 | 成人免费精品视频 | 日本黄色大片免费观看 | 久久久精品国产 | 日韩在线成人 | 北条麻妃一区二区三区在线 | 在线高清av | 国产精品精品视频一区二区三区 | 国产精品久久久久久久久免费 | 久久久久久久久久久久国产精品 | 黄色免费网站在线看 | 99re在线观看 | 成年人看的羞羞网站 | 久久99精品久久久久久青青日本 | 久久久99久久久国产自输拍 | 黄色一级大片视频 | 亚洲成人影院在线观看 | 中文字幕免费看 | www嫩草 | 国产综合久久久久久鬼色 | 热久久久久 | 欧美a网| 91精品久久久久久久久 | 免费午夜视频 | 成人片免费看 | 亚洲精品视频在线观看免费视频 | xxxx网 | 理论片免费在线观看 | 成人黄色短视频在线观看 | 美女扒开尿口来摸 | 欧美激情第二页 | 91精品久久久久久 | wwwjizz日本 | 久久加勒比 | 欧美在线不卡 | 国产精品国产a级 | 亚洲品质自拍视频网站 | 精品自拍视频 | 国产69精品99久久久久久宅男 | 亚洲 欧美 日韩在线 | 狠狠操中文字幕 | 国产精品一区二区在线观看 | 国产欧美精品一区二区三区四区 | 91资源总站 | 伊人网站 | 亚洲综合欧美 | 国产欧美日韩综合精品一 | 成人午夜电影网 | 精品国精品国产自在久不卡 | 成人小视频在线观看 | av毛片在线免费看 | www.亚洲| 国产综合精品一区二区三区 | 亚洲一区二区三区在线 | 欧美一区久久 | 国内成人精品2018免费看 | 欧美全黄| 国产免费观看一区二区三区 | 亚洲国产一区二区在线观看 | 久久精品一区二区三区四区毛片 | 亚洲国产字幕 | 亚洲成人免费在线观看 | 国产精品久久久久久久久久免费 | 91麻豆精品国产91久久久资源速度 | 97成人在线免费视频 | 91传媒在线播放 | 国产美女久久久 | 操操操日日日 | 四虎小视频 | 亚洲不卡视频在线观看 | 国产在线看h | 精品一区二区三区三区 | 国产精品一区二区无线 | 日韩成人在线网 | 亚洲精品一区二区三区99 | 日日干夜夜操 | 亚洲一区视频在线 | 免费欧美一级 | 国产免费一区二区三区 | 亚洲精品一区二区三区99 | 亚洲欧美日韩国产综合 | 懂色中文一区二区在线播放 | av黄色在线免费观看 | 日本精品免费在线观看 | 中文字幕91 | 国产福利片在线观看 | 91久久精品一区二区二区 | 国产福利91精品一区二区 | 欧美一区二区三区在线 | 欧美一级在线 | 最新一级毛片 | 婷婷色国产偷v国产偷v小说 | 国产一级一级毛片女人精品 | 欧美在线一区二区三区 | 丝袜 亚洲 另类 欧美 综合 | 玖玖精品在线 | 欧美日韩精品一区二区三区在线观看 | 97操视频| 亚洲 精品 综合 精品 自拍 | 欧美性福| 午夜影晥 | 亚洲精品视频在线免费 | 二区免费视频 | 亚洲精品第一页 | 亚洲一区视频 | 国产精品久久久久久久久久久久久 | 男人的天堂久久 | 国产精品一区二区三区四区 | 亚洲欧美另类久久久精品2019 | 久久免费的视频 | 亚洲成人免费视频 | 中文字幕在线观看www | 综合婷婷| 国产99久 | 蜜桃av中文字幕 | 久久精品小视频 | 性色av网 | 国产激情一区二区三区 | 国产欧美日韩 | 亚洲国产精品一区二区久久 | 免费日韩 | 久久亚洲一区二区 | 国产91久久精品一区二区 | 美女二区| 久久午夜视频 | 成年人黄色一级毛片 | 亚洲男人的天堂网站 | 久久免费在线观看 | av免费观看在线 | 久久在线视频 | 午夜视频 | 国厂黄色片 | 国产精品久久久久久久久 | 久久视频一区 | a∨色狠狠一区二区三区 | 欧美成人高清视频 | 亚洲综合视频一区 | 亚洲精品9999 | 亚洲精品福利在线 | 亚洲国产婷婷香蕉久久久久久99 | 亚洲一区二区三区视频免费观看 | 精品1区2区 | 国产精品a久久久久 | 成人免费观看视频 | 91av在| 亚洲aⅴ天堂av在线电影软件 | 亚洲国产精品va在线看黑人 | 毛片网站在线观看 | 三级在线免费 | 中文字幕乱码一区二区三区 | 欧美亚洲综合久久 | 亚洲第一区在线 | 欧美日韩成人在线 | 国产精品福利视频 | 国产片一区二区三区 | 中文字幕观看 | 亚洲一区久久 | 国产精品美女久久久久久免费 | 精品久久久久久亚洲综合网 | 日韩欧美国产网站 | 依人成人网 | 国产片一区二区三区 | 91在线视频免费观看 | 久久久久久久一区 | 日韩精品专区在线影院重磅 | 国产精品一区二区久久久久 | 久久精品国产一区二区三区不卡 | 婷五月综合 | 国产高清精品一区 | 日韩一区二区在线免费观看 | 亚洲 欧美 综合 | 久久韩剧网 | 国产亚洲精品久久久456 | 国产一区二区av在线 | 国产精品久久国产精品 | 亚洲一区二区在线 | 嫩呦国产一区二区三区av | 国产欧美精品一区二区三区 | 色婷婷基地 | 欧美 日韩 中文 | 国产一区二区三区在线视频 | 在线欧美日韩 | 欧美日韩一区电影 | 一区二区三区在线免费观看 | 一区二区免费在线视频 | 天天躁日日躁狠狠躁av麻豆 | 亚洲国产高清在线 | 国产一区色 | 午夜999| 精品乱子伦一区二区三区 | 亚洲激情综合 | 国产精品久久久久久久粉嫩 | 欧美日韩精品一区 | 久久久久久亚洲 | 成人午夜影院 | 精品福利在线视频 | 99精品网站 | 狠狠入ady亚洲精品经典电影 | 欧洲精品视频在线观看 | 国产视频一区二区 | 久久精品这里只有精品 | 精品一区二区视频 | 91传媒在线播放 | 日韩在线二区 | 国产精品午夜电影 | 国产精品中文字幕在线播放 | 亚洲成人av在线播放 | 国产精品毛片一区二区在线看 | av毛片免费 | 精品国产乱码久久久久久久 | 午夜影院在线看 | 亚洲黄色一级毛片 | 99热精品国产 | 久久国产香蕉视频 | 超碰高清 | 中文字幕二区三区 | 一区二区在线不卡 | 天天爽夜夜爽夜夜爽精品视频 | 日本黄色毛片 | 国产乱码精品一区二区三区忘忧草 | 国产精品视频播放 | 成人亚洲一区二区 | 日韩在线成人 | www..99热 | 国产精品久久久久婷婷二区次 | 免费黄色毛片视频 | 国产成人精品久久二区二区 | 亚洲大片69999 | 亚洲一区二区在线免费观看 | 伊人春色网| 三级视频在线 | 蜜臀久久99精品久久久无需会员 | 青青草超碰在线 | 久久九九视频 | 91九色porny首页最多播放 | 久久2| 国产传媒在线观看 | 久久国产精品久久久久久电车 | 免费国产在线视频 | 国产中文字幕在线观看 | 日韩成人免费中文字幕 | 欧美女优在线视频 | 欧美乱码久久久久久蜜桃 | 99国内精品久久久久久久 | 久久久久久亚洲 | 国产一级毛片在线视频 | 免费精品视频 | 亚洲免费网站 | 欧美一区二区三区在线观看 | 日韩不卡在线 | av在线免费观看网站 | 99re国产| 一级a性色生活片久久毛片明星 | av一区二区在线观看 | 日狠狠| 国产精品亚洲天堂 | 日日爱视频 | 在线观看毛片视频 | 国产精品25p | 一区二区av | 天天操网| 国产精品九九久久99视频 | 欧美一区二区在线免费观看 | 在线观看免费av网站 | 久久久天堂 | 国产午夜精品一区二区三区视频 | 91网站在线播放 | 一级毛片免费播放 | 久久国产一区二区 | 国产黄色一级大片 | 综合婷婷| 成人不卡视频 | 中文字幕在线免费视频 | 奇米在线视频 | 欧美卡一卡二 | 一区在线看 | a∨在线观看 | 欧美电影一区 | 中文字幕亚洲一区二区va在线 | 亚洲综合福利视频 | 69av.com| 亚洲日本乱码一区两区在线观看 | 福利片在线| 一区二区三区四区在线视频 | 国产精品一区电影 | 在线播放亚洲 | 国产精品亚洲视频 | 日韩免费高清视频 | 国产成人久久777777 |