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

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

SpringBoot SSO輕松實現(附demo)

瀏覽:4日期:2023-03-26 18:19:25
前言

網上SSO的框架很多,此篇文章使用的是自寫的SSO來實現簡單的登錄授權功能,目的在于擴展性,權限這方面,自寫擴展性會好點。

提示:以下是本篇文章正文內容,下面案例可供參考

一、技術介紹1.SSO是什么?

單點登錄(SingleSignOn,SSO),就是通過用戶的一次性鑒別登錄。當用戶在身份認證服務器上登錄一次以后,即可獲得訪問單點登錄系統中其他關聯系統和應用軟件的權限,同時這種實現是不需要管理員對用戶的登錄狀態或其他信息進行修改的,這意味著在多個應用系統中,用戶只需一次登錄就可以訪問所有相互信任的應用系統。這種方式減少了由登錄產生的時間消耗,輔助了用戶管理,是目前比較流行的。

二、使用步驟1.引入maven庫

代碼如下(示例):

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/> </parent> <dependencies> <dependencies> <dependency> <artifactId>hyh-boot-starter-redis</artifactId> <groupId>com.hyh.redis</groupId> <version>1.0.0</version> </dependency> </dependencies>2.具體使用示例

ILogin接口:

package com.hyh.sso;import com.hyh.sso.po.LoginResult;/** * 登錄接口 * * @Author: heyuhua * @Date: 2021/1/8 17:14 */public interface ILogin { /** * 登錄 * * @param account 用戶名 * @param password 密碼 * @param callbackUrl 用戶驗證回調URL * @return */ LoginResult login(String account, String password, String callbackUrl);}

登錄狀態枚舉:

package com.hyh.sso;/** * 登錄狀態枚舉 * * @Author: heyuhua * @Date: 2021/1/8 16:59 */public enum LoginStatus { SUCCESS(1, '登錄成功'), ING(0, '登錄中'), FAIL(-1, '登錄失敗'), ERROR(-2, '登錄異常'), CALLBACK_ERROR(-3, '登錄回調異常'), ACCOUNT_LOCK(-4, '賬戶被鎖定'), EXPIRE(-5,'登錄用戶已過期'); /** * 登錄狀態碼 */ private int code; /** * 登錄狀態消息 */ private String message; private LoginStatus(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

登錄類型枚舉:

package com.hyh.sso;/** * 登錄類型 * * @Author: heyuhua * @Date: 2021/1/8 17:16 */public enum LoginTypes { /** * 登入 */ IN, /** * 登出 */ OUT;}

登錄常規接口:

package com.hyh.sso;package com.hyh.sso.service;import com.hyh.sso.ILogin;/** * 常規登錄接口 * * @Author: heyuhua * @Date: 2021/1/8 17:54 */public interface LoginService extends ILogin {}

登錄接口實現:

package com.hyh.sso.service.impl;import com.alibaba.fastjson.JSON;import com.hyh.sso.LoginStatus;import com.hyh.sso.po.LoginResult;import com.hyh.sso.po.LoginUser;import com.hyh.sso.service.LoginService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;import org.springframework.http.MediaType;import org.springframework.stereotype.Service;import org.springframework.web.client.RestTemplate;/** * 登錄接口實現 * * @Author: heyuhua * @Date: 2021/1/8 17:56 */@Servicepublic class LoginServiceImpl implements LoginService { private static final Logger LOG = LoggerFactory.getLogger(LoginServiceImpl.class); /** * rest接口請求模板 */ private static RestTemplate restTemplate = new RestTemplate(); @Override public LoginResult login(String account, String password, String callbackUrl) { LoginResult loginResult = null; try { HttpHeaders headers = new HttpHeaders(); //設置請求媒體數據類型 headers.setContentType(MediaType.APPLICATION_JSON); //設置返回媒體數據類型 headers.add('Accept', MediaType.APPLICATION_JSON.toString()); HttpEntity<String> formEntity = new HttpEntity<String>(JSON.toJSONString(new LoginUser(account, password)), headers); loginResult = restTemplate.postForObject(callbackUrl, formEntity, LoginResult.class); } catch (Exception e) { LOG.error('login valid callback error', e); return new LoginResult(LoginStatus.CALLBACK_ERROR); } return loginResult == null ? new LoginResult(LoginStatus.ERROR) : loginResult; }}

登錄用戶對象:

package com.hyh.sso.po;/** * 登錄用戶對象 * * @Author: heyuhua * @Date: 2021/1/8 16:58 */public class LoginUser { /** * 賬號 */ private String account; /** * 密碼 */ private String password; /** * 登錄時間 */ private String loginTime; public LoginUser(String account, String password) { this.account = account; this.password = password; } public LoginUser() { } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getLoginTime() { return loginTime; } public void setLoginTime(String loginTime) { this.loginTime = loginTime; }}

用戶Token對象:

package com.hyh.sso.po;import com.hyh.utils.code.MD5;import com.hyh.utils.common.StringUtils;import java.util.Calendar;/** * 用戶Token對象 * * @Author: heyuhua * @Date: 2021/1/8 17:07 */public class UserToken { /** * token */ private String token; /** * 過期時間 */ private String expireTime; public UserToken(String token, String expireTime) { this.token = token; this.expireTime = expireTime; } public UserToken() { } public static UserToken getUserToken() { Calendar nowTime = Calendar.getInstance(); nowTime.add(Calendar.MINUTE, 30); return new UserToken(MD5.getMD5String(StringUtils.ranStr(32)), String.valueOf(nowTime.getTimeInMillis())); } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getExpireTime() { return expireTime; } public void setExpireTime(String expireTime) { this.expireTime = expireTime; } /** * 生成Token */ private String generateToken() { return MD5.getMD5String(StringUtils.ranStr(32)); }}

登錄結果對象:

package com.hyh.sso.po;import com.hyh.sso.LoginStatus;import com.hyh.sso.LoginTypes;/** * 登錄結果對象 * @Author: heyuhua * @Date: 2021/1/8 16:58 */public class LoginResult { /** * 登錄用戶對象 */ private LoginUser loginUser; /** * 登錄用戶令牌 */ private UserToken userToken; /** * 登錄狀態 */ private LoginStatus loginStatus; /** * 登錄類型 */ private LoginTypes loginTypes; public LoginResult(){} public LoginResult(LoginStatus loginStatus) { this.loginStatus = loginStatus; } public LoginUser getLoginUser() { return loginUser; } public void setLoginUser(LoginUser loginUser) { this.loginUser = loginUser; } public UserToken getUserToken() { return userToken; } public void setUserToken(UserToken userToken) { this.userToken = userToken; } public LoginStatus getLoginStatus() { return loginStatus; } public void setLoginStatus(LoginStatus loginStatus) { this.loginStatus = loginStatus; } public LoginTypes getLoginTypes() { return loginTypes; } public void setLoginTypes(LoginTypes loginTypes) { this.loginTypes = loginTypes; } @Override public String toString() { return 'LoginResult{' +'loginUser=' + loginUser +', userToken=' + userToken +', loginStatus=' + loginStatus +', loginTypes=' + loginTypes +’}’; }}

登錄助手:

package com.hyh.sso.helper;import com.alibaba.fastjson.JSON;import com.hyh.redis.helper.RedisHelper;import com.hyh.sso.LoginStatus;import com.hyh.sso.po.LoginResult;import com.hyh.sso.po.LoginUser;import com.hyh.sso.po.UserToken;import com.hyh.sso.service.LoginService;import com.hyh.utils.common.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.util.Assert;import javax.annotation.Resource;import java.util.Date;import java.util.concurrent.TimeUnit;/** * 登錄助手 * * @Author: heyuhua * @Date: 2021/1/8 17:13 */@Componentpublic class LoginHelper { /** * 日志 */ private static final Logger LOG = LoggerFactory.getLogger(LoginHelper.class); /** * 登錄用戶信息KEY */ private final String LOGIN_USER_KEY = 'login:user:'; /** * 登錄用戶TOKEN KEY */ private final String LOGIN_TOKEN_KEY = 'login:token:'; /** * 登錄失敗統計 KEY */ private final String LOGIN_FAIL_COUNT_KEY = 'login:fail:count'; /** * 登錄失敗最多允許次數 */ private final long MAX_FAIL_COUNT = 5; /** * 登錄服務 */ @Resource private LoginService loginService; /** * redis助手 */ @Autowired private RedisHelper redisHelper; /** * 登錄 * * @param account 用戶名 * @param password 密碼 * @param callbackUrl 回調URL * @return */ public LoginResult login(String account, String password, String callbackUrl) { Assert.notNull(account, 'account is null '); Assert.notNull(password, 'password is null '); Assert.notNull(callbackUrl, 'callbackUrl is null '); //判斷賬戶是否多次登錄失敗被鎖定 String value = redisHelper.getStringValue(LOGIN_FAIL_COUNT_KEY + account); if (StringUtils.isNotBlank(value)) { Long loginFailCount = Long.parseLong(value); if (loginFailCount.longValue() >= MAX_FAIL_COUNT) {return new LoginResult(LoginStatus.ACCOUNT_LOCK); } } //登錄操作 LoginResult loginResult = loginService.login(account, password, callbackUrl); switch (loginResult.getLoginStatus()) { case SUCCESS://登錄成功loginSuccess(loginResult);break; case FAIL://登錄失敗loginFail(loginResult);break; case ERROR:loginError(loginResult);//登錄異常break; default:break; } return loginResult; } /** * 注銷 * * @param account * @param token */ public void logout(String account, String token) { Assert.notNull(account, 'account is null '); Assert.notNull(token, 'token is null '); removeKey(account, token); } /** * 注銷 * * @param token */ public void logout(String token) { Assert.notNull(token, 'token is null '); removeKey(token); } /** * 獲取登錄用戶 * * @param token * @return */ public LoginUser getLoginUser(String token) { Assert.notNull(token, 'token is null '); String value = redisHelper.getStringValue(LOGIN_USER_KEY + token); if (StringUtils.isNotBlank(value)) { return JSON.parseObject(value, LoginUser.class); } return null; } /** * 移除 key * * @param account * @param token */ private void removeKey(String account, String token) { redisHelper.del(LOGIN_FAIL_COUNT_KEY + account); redisHelper.del(LOGIN_TOKEN_KEY + account); redisHelper.del(LOGIN_USER_KEY + token); } /** * 移除 Key * * @param token */ private void removeKey(String token) { redisHelper.del(LOGIN_USER_KEY + token); //其余的key到達過期時間自動過期 } /** * 登錄異常 * * @param loginResult */ private void loginError(LoginResult loginResult) { LOG.error('user 【' + loginResult.getLoginUser().getAccount() + '】 login error'); } /** * 登錄失敗操作 * * @param loginResult */ private void loginFail(LoginResult loginResult) { String key = LOGIN_FAIL_COUNT_KEY + loginResult.getLoginUser(); redisHelper.increment(key, 30 * 60 * 1000); } /** * 登錄成功操作 * * @param loginResult */ private void loginSuccess(LoginResult loginResult) { LoginUser loginUser = loginResult.getLoginUser(); loginUser.setLoginTime(String.valueOf(new Date().getTime())); UserToken userToken = UserToken.getUserToken(); redisHelper.set(LOGIN_TOKEN_KEY + loginResult.getLoginUser().getAccount(), JSON.toJSONString(userToken), 30, TimeUnit.MINUTES); redisHelper.set(LOGIN_USER_KEY + userToken.getToken(), JSON.toJSONString(loginUser), 30, TimeUnit.MINUTES); redisHelper.del(LOGIN_FAIL_COUNT_KEY + loginResult.getLoginUser()); }}3.配置文件

代碼如下(示例):

server: port: 8088spring: #redis配置 redis: host: 192.168.6.134 port: 30511 password:4.單元測試

測試代碼如下(示例):

@Autowired private LoginHelper loginHelper; @Test public void testLogin() { //測試時先開啟HyhBootApplication String account = 'hyh'; String password = 'hyh-pwd'; String cllbackUrl = 'http://localhost:8088/hyh/login';//在com.hyh.core.web下可查看 LoginResult loginResult = loginHelper.login(account, password, cllbackUrl); System.out.println('loginResult:' + loginResult.toString()); }//控制層代碼 @RequestMapping(value = 'login', method = RequestMethod.POST) public LoginResult login(@RequestBody LoginUser loginUser) { Assert.notNull(loginUser.getAccount(), 'account is null'); Assert.notNull(loginUser.getPassword(), 'password is null'); LoginResult loginResult = new LoginResult(LoginStatus.SUCCESS); loginResult.setLoginUser(loginUser); //模擬直接返回登錄成功 return loginResult; }總結

是不是感覺很簡單?更多用法請點擊下方查看源碼,關注我帶你揭秘更多高級用法

源碼地址:點此查看源碼.

到此這篇關于SpringBoot SSO輕松實現(附demo)的文章就介紹到這了,更多相關SpringBoot SSO內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 成人久久久久 | 日本阿v视频高清在线中文 中文二区 | 亚洲日韩欧美一区二区在线 | caoporn免费在线视频 | 91高清视频在线观看 | 亚洲精品在线免费播放 | 逼逼av | 特级淫片裸体免费看 | 久久狠狠 | 亚洲一区二区三区在线播放 | 亚洲欧美精品 | 国产毛片一区二区 | 特黄视频 | 国产精品一区久久久久 | 一区二区三区亚洲视频 | 精品欧美乱码久久久久久 | 中文字幕日韩欧美一区二区三区 | 中文字幕 国产精品 | 久久女人 | 日本一区二区不卡视频 | 99九九久久 | 亚洲综合中文网 | 国产999精品久久久久久 | 久久久久国产视频 | 欧美激情一区二区三区在线视频 | 天天综合网网欲色 | 91精品中文字幕一区二区三区 | 亚洲欧美精品一区二区 | 成人在线小视频 | 久久久精品一区 | 国产精品色 | 日韩在线免费观看av | 午夜激情电影在线 | 日av一区 | 亚洲人成网亚洲欧洲无码 | 久久久久免费观看 | 国产高清av在线一区二区三区 | bxbx成人精品一区二区三区 | 久久精品亚洲 | 五月网婷婷 | 亚洲视频 欧美视频 | 成视频年人免费看黄网站 | 久久久久久免费毛片精品 | 欧美日韩精品一区二区三区在线观看 | 亚洲精品电影网在线观看 | 亚洲国产成人久久一区二区三区 | 亚洲欧美日韩在线一区 | 精品成人免费一区二区在线播放 | 精品一区二区三区在线观看 | 精品在线91 | 91国内外精品自在线播放 | 成人在线www | 国产三级在线免费观看 | 一区二区三区高清 | 伊人激情网 | 亚洲精品乱码久久久久久蜜桃 | 免费观看一区二区三区毛片 | 成人欧美一区二区三区白人 | 国产一区二区三区四区在线观看 | 国产欧美精品 | 国产欧美综合一区二区三区 | 亚洲国产精品一区二区久久 | 亚洲视频自拍 | 国产一级视频在线播放 | 欧美一级特黄aaaaaaa在线观看 | 日韩欧美在线观看一区 | 午夜精品久久久久久久 | 狠狠插狠狠操 | 亚洲欧美日韩另类精品一区二区三区 | 伊人夜夜躁av伊人久久 | 久久伊人在 | 成人在线一区二区 | 成人福利在线观看 | 日本欧美一区二区 | 欧美色性| 日韩有码电影 | 在线观看中文字幕 | 91视频国产网站 | 精精国产| 欧美福利在线 | 看片天堂| 欧美一区在线看 | 国产偷自视频区视频 | 秋霞av电影 | 色性av| 中文字幕亚洲精品 | 91视频免费观看 | 国产一区二区三区免费在线 | 日本在线视频观看 | 五月天婷婷综合 | 99久久这里只有精品 | 亚洲女人天堂成人av在线 | 情一色一乱一欲一区二区 | 国产日韩视频在线观看 | 国产主播福利 | 亚洲欧美日韩国产 | 久久久涩 | 欧美日韩视频 | 精品久久久久久久久久久久久久 | 亚州成人| www.一区二区 | 日韩精品视频免费在线观看 | 国产中文字幕在线观看 | 9999久久久久 | 免费在线一区二区 | a在线免费 | 日本精品一区二区在线观看 | 极品久久久久久 | 久久久久国产 | 国产一区二区精品丝袜 | 品久久久久久久久久96高清 | 欧美xxxⅹ性欧美大片 | 七龙珠z普通话国语版在线观看 | 欧美福利一区二区 | 欧美日韩中文字幕 | 日韩欧美国产一区二区 | 亚洲h视频 | 91免费视频在线 | 国产片在线观看 | www日韩 | 久久久久网站 | av动漫一区二区 | 免费观看一区二区三区毛片 | 精品一区二区久久 | 99精品久久精品一区二区爱城 | 男人的天堂在线视频 | 精品久久伊人 | 国产精品久久久久久亚洲影视 | 亚洲一区欧美一区 | 日韩精品久久久 | 粉嫩高清一区二区三区精品视频 | 成人福利在线 | 99亚洲视频| 久久三区 | 中文无码久久精品 | 久久久久久久久久久九 | 影音先锋成人资源网 | 午夜免费观看网站 | 中文字幕第二十六页页 | 亚洲精品午夜 | 午夜电影 | 日日爽| 91视频免费看 | av中文在线 | 久久av黄色| 欧美性影院 | 欧美一级在线观看 | 国产欧美日本 | 91久久久久久久久久久久久 | 成人日批| av中文字幕在线观看 | 一区二区不卡视频在线观看 | 国产精品久久久久久久久免费桃花 | 精品在线不卡 | 夜夜艹 | 精品久久久久久久久久久久久久 | 国产精品亚洲一区二区三区 | 日韩三级av在线 | 国产在线专区 | 成人午夜小视频 | 中文字幕国产视频 | 国产一区在线看 | 黄视频网址| 在线精品亚洲欧美日韩国产 | 欧美日本一区 | 中文字幕在线视频精品 | 国产精品一二三区 | 国产精品久久精品 | 欧美www. | 一区二区免费视频 | 亚洲精品福利在线 | 日本成人中文字幕 | 在线国产一区二区 | 欧美一级在线观看 | 在线免费视频一区二区 | 亚洲www啪成人一区二区 | 欧美精品综合在线 | 国产伦精品久久久一区二区三区 | 国产毛片在线 | 久热精品在线视频 | 日韩精品一区二区三区中文在线 | 亚洲欧洲精品一区二区 | 亚洲协和影视 | 成人三级视频网站 | 夜夜骑天天干 | 亚洲一区综合 | 亚洲成人av | 国产美女网站视频 | 久久av网 | 91在线免费观看 | 日韩精品在线观看一区 | 91综合视频在线观看 | 毛片网子| 午夜精品久久久久久久久 | 一区二区三区 在线 | 亚洲一区精品视频 | 成年人精品视频在线观看 | 亚洲成人av在线 | 日韩精品一二三区 | 91免费版在线观看 | 正在播放国产精品 | 日韩在线免费 | 精品国产一区二区三区四 | 欧美日韩中文 | 毛片网站大全 | 不卡一区二区三区四区 | 国产亚洲精品一区二区 | 亚洲欧美日韩另类精品一区二区三区 | 91精品国产乱码久久蜜臀 | 亚洲乱码一区二区三区在线观看 | 国产精品永久在线观看 | 九九久久精品 | 黄色二区| 最新中文字幕久久 | 久久高清片 | 国产精品乱码人人做人人爱 | 亚洲成人在线视频播放 | 国产精品无| 亚洲精品美女久久久 | www.欧美亚洲 | 欧美日韩在线视频观看 | 538在线精品| 国产精品无码永久免费888 | 欧美精品网站 | 久久国产一区二区三区 | 午夜国产精品视频 | 久久久999精品视频 99国产精品久久久久久久 | 欧美亚洲一区 | 一级在线免费视频 | 91免费观看视频 | 国产精品久久视频 | 91精品在线播放 | 情趣视频在线免费观看 | 91麻豆精品国产91久久久久久久久 | 欧美性猛交xxxx黑人猛交 | 久久国产一区 | 操操网| 久久久久久久国产 | 欧美一区二区三区在线视频 | 国产精品美女久久久久久久网站 | 中文字幕在线观看不卡视频 | 天天干天天操 | 欧美成人激情视频 | 欧美亚洲三级 | 国产免费av在线 | 国产视频一二三区 | 国产婷婷综合 | 97国产精品久久久 | www.伊人网 | 成人精品一区二区 | 精品成人av | 欧美成人精品一区二区三区 | 亚洲欧美在线播放 | 午夜影院免费版 | 国内精品国产成人国产三级粉色 | 91aiai| 国产h视频在线观看 | 免费av观看 | 在线国产一区二区 | 久久中文字幕一区 | 欧美精产国品一二三区 | 久久影视精品 | 午夜免费视频 | 91免费看片神器 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久国产传媒 | 久久久久久久久久穴 | 毛片日韩 | www.欧美日韩 | 国产精品国色综合久久 | 超黄视频在线观看 | 精品美女在线 | 免费黄色在线视频网址 | 国产精品成人久久久久 | 天天爽夜夜爽夜夜爽精品视频 | 精品综合 | 91精品国产欧美一区二区成人 | 日韩五月 | 精品视频久久久 | 99福利视频 | 在线国产一区二区 | 欧美2区| 91精品国产日韩91久久久久久 | 91麻豆精品国产91久久久资源速度 | 午夜欧美精品久久久久 | 日韩一区二区三区在线观看 | 免费视频一区二区三区在线观看 | 一级片手机免费看 | 欧美色图另类 | 日韩三区 | 成人一级毛片 | 久久久资源 | 97国产精品视频人人做人人爱 | 欧美精品一区二区三区蜜桃视频 | 国内精品视频一区二区三区八戒 | 九九热视频在线 | 亚洲永久免费视频 | 亚洲精品在线播放 | 亚洲精品一区二区三区蜜桃久 | 欧美精品一区二区三区四区 | 在线亚洲成人 | 99精品一区二区三区 | 中文字幕av网 | 新疆少妇videos高潮 | 国产高清精品一区二区三区 | 一级黄色片看看 | 91精品国产99 | 亚洲欧洲综合av | 国精产品一区二区三区黑人免费看 | 日韩国产在线观看 | 日韩不卡在线 | 一区二区三区影院 | 国产草草视频 | 中文学幕专区 | 奇米成人 | 九九热精品视频 | 国产成人精品一区一区一区 | 91文字幕巨乱亚洲香蕉 | 亚洲视频免费在线 | 国产亚洲一区二区三区在线观看 | 色综合久久网 | 国产亚洲一区二区三区在线观看 | 日本黄色大片免费 | 99国产精品99久久久久久 | 国产精品毛片久久久久久久 | 久久久国产精品入口麻豆 | 黄色三级视频 | 美女二区 | 中文字幕乱码一区二区三区 | 中文二区 | 国产在线一区二区三区 | 亚洲视频在线看 | 亚洲精品一区二区网址 | 久久精品视 | √新版天堂资源在线资源 | 精品日韩视频 | 久久免费精品视频 | 久久久精品久久久 | 中文字字幕在线 | 黄色一级免费观看 | 亚洲精品中文字幕乱码无线 | 日本三级视频 | 国产精品天天干 | 欧美午夜一区二区福利视频 | 日韩成人高清视频 | 成人在线看片网站 | 婷婷五月色综合 | 一区二区三区不卡视频 | 黄a在线 | 欧美日韩精品一区二区三区蜜桃 | 一区二区三区精品视频 | 久久久久久国产免费视网址 | 国产精品网站在线 | 亚洲久悠悠色悠在线播放 | 国产精品久久久久国产a级 日韩在线二区 | 精品在线播放 | 91亚洲一区 | 国产成人精品一区二区三区视频 | 黄色片免费 | 久久人人爽人人爽人人片av高清 | 国产中文在线播放 | 欧美日韩精品一区二区三区 | 免费高潮视频95在线观看网站 | 成人免费视频网 | 成人不卡 | 中文字幕精品一区久久久久 | 国产福利91精品一区二区 | 久久国产精品一区 | 在线色av | 一级欧美一级日韩片 | 人人干天天干 | 中文字幕在线观看一区二区三区 | 欧美日韩另类在线 | 另类天堂 | 亚洲高清中文字幕 | 一区二区三区在线看 | 青青久久久 | 亚洲一区电影 | 波多野结衣 一区二区 | 叶山小百合av一区二区 | 欧美另类一区二区 | 欧美日韩精品久久久 | 欧美日韩一区二区三区不卡视频 | 一区二区久久 | 在线成人www免费观看视频 | 成视频年人免费看黄网站 | 成人天堂资源www在线 | 国产第一区在线观看 | 久久久久久毛片免费观看 | 黄色毛片在线观看 | 欧美激情精品久久久久久免费 | 日韩一区二区三区在线 | 精品乱码一区二区 | 国外成人在线视频网站 | av久久| 国产一级做a爰片在线看免费 | 欧美日韩视频在线观看免费 | 玖玖精品在线 | 精品一区av | 亚洲欧美日韩电影 | 成人在线观 | 国产传媒在线 | 久久精品国产一区 | 五月激情婷婷六月 | 武道仙尊动漫在线观看 | 久久精品美女 | 欧美性一区二区 | 亚洲 欧美 日韩 丝袜 另类 | 国产成人综合网 | 欧美成人精品一区二区三区 | 日韩视频一区二区三区四区 | 亚洲成人国产精品 | 中文字幕视频在线 | 亚洲日韩中文字幕一区 | 亚洲高清视频在线观看 | 精品视频在线观看一区二区三区 | 一级黄色录像毛片 | 大桥未久亚洲精品久久久强制中出 | 欧美精品综合 | 国产精品第一国产精品 | 亚洲免费在线观看 | 一区二区免费 | 日狠狠| 99pao成人国产永久免费视频 | 欧美不卡 | 一区福利视频 | 超碰官网| 久久99精品久久久久久久青青日本 | 91一区 | 亚洲狠狠爱一区二区三区 | 人人干天天操 | 玖玖精品视频 | 日韩高清在线 | 免费中文字幕日韩欧美 | 国产亚洲欧美在线 | 久久99精品久久久久久青青日本 | 色爱av | 亚州中文字幕 | 日韩欧美国产精品一区二区三区 | 日av一区 | 久久在线 | 久久国产一区二区 | 在线播放国产视频 | 久久精品手机视频 | www.成人在线视频 | 国产精品久久久久久久 | 欧美日本亚洲 | 国产女人高潮视频在线观看 | 日韩不卡一二三 | 国产精品一码二码三码在线 | 亚洲精品成人网 | 国产高清一区二区 | 欧美视频二区 | 亚洲欧洲日本国产 | 国产91网址 | 在线观看第一页 | 成人a在线 | 日韩一区二区在线播放 | 91爱啪啪| 在线第一页 | 男人久久天堂 | 日韩字幕一区 | 国产a√ | 一区二区三区日韩精品 | 日韩欧美一区二区三区久久婷婷 | 国产一二三区在线观看 | 成人免费一区二区三区视频网站 | 人妖一区 | 在线看亚洲 | 国产亚洲一区二区精品 | 日日摸夜夜添夜夜添高潮视频 | 伊人电院网 | 玖玖成人 | 亚洲中出| 91麻豆精品国产91久久久久久久久 | 嫩呦国产一区二区三区av | 色约约精品免费看视频 | 日韩在线播放欧美字幕 | 神马午夜 | 一区二区三区免费网站 | 日韩欧美在线观看一区 | 欧美 日韩 国产 在线 | 一区二区精品在线 | 国产噜噜噜噜噜久久久久久久久 | xvideos.蜜桃一区二区 | 精品国产不卡一区二区三区 | 欧美一区三区 | 成人在线观看av | 黄色小视频在线免费观看 | 一道本一二三区 | 99久久夜色精品国产亚洲1000部 | 狠狠人人| 日韩不卡 | 美国特级a毛片免费网站 | 日韩国产二区 | av网站在线免费看 | 一区二区三区视频播放 | 在线看一级片 | 亚洲一区二区中文字幕 | 欧美 日韩 亚洲 一区 | 欧美成人一区二免费视频软件 | 91精品久久 | 女人久久久久久久 | 在线小视频| 国产精品久久综合 | 国产欧美精品区一区二区三区 | 四虎动漫 | 天堂va在线高清一区 | 欧美一区二区三区视频 | 在线视频国产一区 | 日韩成人久久 | 成人免费高清 | 亚洲一区中文字幕在线观看 | 99久久99热这里只有精品 | 伊人色综合久久久天天蜜桃 | 野狼在线社区2017入口 | 国产成人网 | 午夜日韩在线观看 | 日韩在线欧美 | 99精品一区二区三区 | 999视频 | 亚洲欧美一区二区三区在线 | 欧美成人手机在线 | 久久精选视频 | 国产色在线 | 青青草国产在线 | 成人久久久精品国产乱码一区二区 | 99精品欧美一区二区三区 | 狠狠操综合网 | 偷拍电影一区二区三区 | 日韩中文字幕在线观看 | 欧美激情精品一区 | 久久国产精品视频一区 | 99精品欧美一区二区三区综合在线 | 九九国产精品视频 | 一级视频网站 | 一级片免费在线 | 成人在线播放器 | 九九视频在线 | 久久精视频 | 日韩精品在线观看免费 | 久久久久国产一区二区三区四区 | 亚洲日本乱码一区两区在线观看 | 久久激情网站 | 久久久成 | 精品欧美激情在线观看 | av官网| 国产成人精品一区二区三区在线 | chinese中国真实乱对白 | 婷婷毛片 | 久久免费精品 | 久久精品1 | 国产精久久久久久久妇剪断 | а_天堂中文最新版地址 | 99国产精品久久久 | 国内成人精品2018免费看 | 欧美专区在线观看 | 日韩av一区在线 | 亚洲成人久久久 | 亚洲精品一区中文字幕乱码 | 亚洲色图综合 | 福利视频一区 | 国产精品不卡一区 | 红杏aⅴ成人免费视频 | 久久日韩 | 二区在线观看 | 国产精品一区久久 | 久久久亚洲一区 | 青青草网站| 伊人激情av一区二区三区 | 欧美一级免费观看 | 久久香蕉国产视频 | 国产高清久久久 | 国产91在线免费观看 | 亚洲国产精品99久久久久久久久 | 国产成人免费视频网站视频社区 | 国产精品一区二区精品 | 亚洲精品免费视频 | 国产激情91久久精品导航 | 一二三区精品 | 中文字幕一二区 | 成人一级视频在线观看 | 国产乱码精品1区2区3区 | 国产精品免费一区二区三区四区 | 国产精品久久久久久妇女6080 | 成人国产在线 | 91麻豆精品国产91久久久资源速度 | av官网在线 | 精品在线视频观看 | 日本视频网 | 亚洲视频精品 | 在线观看污片 | 一级黄色毛片免费观看 | 国产在线不卡 | 久久色视频 | 久久精品综合 | 精品国产不卡一区二区三区 | 国产精品久久精品 | 四虎影院观看 | 欧美一区二区免费 | 国产视频一二区 | 三级免费网站 | 91精品久久| 国产精品毛片一区二区在线看 | 亚洲一区精品在线 | 精品中文字幕一区二区三区 | 国产成人高清 | 欧美成人a∨高清免费观看 在线视频成人 | 欧美色v| 久久91精品久久久久久9鸭 | 91视频免费网站 | 久久亚洲二区 | 男人久久天堂 | 国产综合精品一区二区三区 | 久久精品成人免费视频 |