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

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

SpringBoot 整合 Shiro 密碼登錄與郵件驗證碼登錄功能(多 Realm 認證)

瀏覽:51日期:2023-03-23 17:29:45

導入依賴(pom.xml)

<!--整合Shiro安全框架--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> <!--集成jwt實現token認證--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.2.0</version> </dependency>

在 SpringBoot 項目配置 config 包下創建 ShiroConfig 配置類

@Configurationpublic class ShiroConfig { /** * ShiroFilterFactoryBean * <p> * anon:無需認證就可以訪問 * authc:必須認證才能訪問 * user:必須擁有 記住我 功能才能用 * perms:擁有對某個資源的權限能訪問 * role:擁有某個角色權限能訪問 */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier('securityManager') DefaultWebSecurityManager defaultWebSecurityManager) { ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); // 設置安全管理器 factoryBean.setSecurityManager(defaultWebSecurityManager); // 添加shiro的內置過濾器 Map<String, String> filterMap = new LinkedHashMap<>(); // 放行不需要權限認證的接口 // 網站首頁 filterMap.put('/', 'anon'); filterMap.put('/index', 'anon'); filterMap.put('/index.html', 'anon'); // 不驗證跳轉接口 filterMap.put('/into/**', 'anon'); // 需要權限認證的接口 // 驗證跳轉接口 filterMap.put('/verifyInto/**', 'authc'); factoryBean.setFilterChainDefinitionMap(filterMap); // 訪問沒有授權的資源 factoryBean.setLoginUrl('redirect:/into/login'); // 設置無權限時跳轉的url factoryBean.setUnauthorizedUrl('redirect:/into/login'); return factoryBean; } /** * 管理shiro的生命周期 */ @Bean('lifecycleBeanPostProcessor') public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } /** * 注入 密碼登錄CustomRealm */ @Bean @DependsOn('lifecycleBeanPostProcessor') public UserPasswordRealm userPasswordRealm() { return new UserPasswordRealm(); } /** * 注入 郵箱驗證登錄EmailRealm */ @Bean @DependsOn('lifecycleBeanPostProcessor') public UserEmailRealm userEmailRealm() { return new UserEmailRealm(); } /** * 默認安全管理器 */ @Bean public DefaultWebSecurityManager securityManager(UserPasswordRealm userPasswordRealm, UserEmailRealm userEmailRealm, AbstractAuthenticator abstractAuthenticator) { DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); List<Realm> realms = new ArrayList<>(); realms.add(userPasswordRealm); realms.add(userEmailRealm); defaultWebSecurityManager.setRealms(realms); // 記住我 defaultWebSecurityManager.setRememberMeManager(cookieRememberMeManager()); defaultWebSecurityManager.setAuthenticator(abstractAuthenticator); return defaultWebSecurityManager; } /** * 認證器 把我們的自定義驗證加入到認證器中 */ @Bean public AbstractAuthenticator abstractAuthenticator(UserPasswordRealm userPasswordRealm, UserEmailRealm userEmailRealm) { // 自定義模塊化認證器,用于解決多realm拋出異常問題 //開始沒用自定義異常問題,發現不管是賬號密碼錯誤還是什么錯誤 //shiro只會拋出一個AuthenticationException異常 ModularRealmAuthenticator authenticator = new MyCustomModularRealmAuthenticator(); // 認證策略:AtLeastOneSuccessfulStrategy(默認),AllSuccessfulStrategy,FirstSuccessfulStrategy authenticator.setAuthenticationStrategy(new AtLeastOneSuccessfulStrategy()); // 加入realms List<Realm> realms = new ArrayList<>(); realms.add(userPasswordRealm); realms.add(userEmailRealm); authenticator.setRealms(realms); return authenticator; } /** * 加入shiro注解 代理生成器 切面 */ @Bean @DependsOn({'lifecycleBeanPostProcessor'}) public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); advisorAutoProxyCreator.setProxyTargetClass(true); return advisorAutoProxyCreator; } /** * 加入shiro注解 切點 */ @Bean public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); return authorizationAttributeSourceAdvisor; } /** * 設置cookie 記住我生成cookie */ @Bean public CookieRememberMeManager cookieRememberMeManager() { CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); cookieRememberMeManager.setCookie(rememberMeCookie()); return cookieRememberMeManager; } /** * 設置cookie有效時間 */ @Bean public SimpleCookie rememberMeCookie() { /*這個參數是cookie的名稱,對應前端頁面的checkbox的name=remremberMe*/ SimpleCookie simpleCookie = new SimpleCookie('rememberMe'); /*cookie的有效時間為30天,單位秒*/ simpleCookie.setMaxAge(259200); return simpleCookie; }}

創建自定義驗證器 MyCustomModularRealmAuthenticator 類

public class MyCustomModularRealmAuthenticator extends ModularRealmAuthenticator { @Override protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) { AuthenticationStrategy authenticationStrategy = this.getAuthenticationStrategy(); AuthenticationInfo authenticationInfo = authenticationStrategy.beforeAllAttempts(realms, token); Iterator var5 = realms.iterator(); while (var5.hasNext()) { Realm realm = (Realm) var5.next(); authenticationInfo = authenticationStrategy.beforeAttempt(realm, token, authenticationInfo); if (realm.supports(token)) { AuthenticationInfo info = null; Throwable t = null; info = realm.getAuthenticationInfo(token); authenticationInfo = authenticationStrategy.afterAttempt(realm, token, info, authenticationInfo, t); } } authenticationInfo = authenticationStrategy.afterAllAttempts(token, authenticationInfo); return authenticationInfo; }}

創建密碼登錄時驗證授權 UserPasswordRealm 類

@Componentpublic class UserPasswordRealm extends AuthorizingRealm { // 注入用戶業務 @Autowired private UserMapper userMapper; /** * 授權 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { System.out.println('————密碼授權————doGetAuthorizationInfo————'); return null; } /** * 認證 */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println('————密碼認證————doGetAuthenticationInfo————'); UsernamePasswordToken userToken = (UsernamePasswordToken) token; // 連接數據庫 查詢用戶數據 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq('user_name', userToken.getUsername()); User user = userMapper.selectOne(wrapper); // 驗證用戶 if (user == null) { throw new UnknownAccountException(); } return new SimpleAuthenticationInfo('', user.getUserPassword(), ''); } /** * 用來判斷是否使用當前的 realm * * @param var1 傳入的token * @return true就使用,false就不使用 */ @Override public boolean supports(AuthenticationToken var1) { return var1 instanceof UsernamePasswordToken; }}

創建郵件驗證碼登錄時驗證授權UserEmailRealm 類

@Componentpublic class UserEmailRealm extends AuthorizingRealm { // 注入用戶業務 @Autowired UserService userService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out.println('————郵箱登錄授權————doGetAuthorizationInfo————'); return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println('————郵箱登錄認證————doGetAuthenticationInfo————'); UserEmailToken userEmailToken = (UserEmailToken) token; String userEmail = (String) userEmailToken.getPrincipal(); // 連接數據庫 查詢用戶數據 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq('user_email', userEmail); User user = userService.getOne(wrapper); //因為沒有密碼,并且驗證碼在之前就驗證了 if (user == null) { throw new UnknownAccountException(); } return new SimpleAuthenticationInfo('', userEmail, ''); } /** * 用來判斷是否使用當前的 realm * * @param var1 傳入的token * @return true就使用,false就不使用 */ @Override public boolean supports(AuthenticationToken var1) { return var1 instanceof UserEmailToken; }}

創建郵件驗證碼登錄驗證通過生成令牌的 UserEmailToken 類(密碼登錄時使用shiro默認的 UsernamePasswordToken 令牌)

@Data // 使用lombok 生成get方法、set方法public class UserEmailToken implements HostAuthenticationToken, RememberMeAuthenticationToken { private String userEmail; private boolean rememberMe; private String host; public UserEmailToken() { this.rememberMe = false; } public UserEmailToken(String userEmail) { this(userEmail, false, null); } public UserEmailToken(String userEmail, boolean rememberMe) { this(userEmail, rememberMe, null); } public UserEmailToken(String userEmail, boolean rememberMe, String host) { this.userEmail = userEmail; this.rememberMe = rememberMe; this.host = host; } @Override public String getHost() { return host; } @Override public boolean isRememberMe() { return rememberMe; } /** * 重寫getPrincipal方法 */ @Override public Object getPrincipal() { return userEmail; } /** * 重寫getCredentials方法 */ @Override public Object getCredentials() { return userEmail; }}

創建密碼鹽值加密 MDPasswordUtil 工具類

public class MDPasswordUtil { public String getMDPasswordUtil(String userName, String userPassword) { String hashAlgorithmName = 'MD5'; // 加密方式:md5加密 Object credentials = userPassword; // 密碼 Object salt = ByteSource.Util.bytes(userName); // 鹽 int hashIterations = 512; // 加密次數 Object result = new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations); return result.toString(); }}

控制層用戶密碼登錄

// 用戶密碼登錄 @PostMapping('/passwordLogin') public String userLogin(@RequestParam('userName') String userName, @RequestParam('userPassword') String userPassword, HttpSession session, Model model) { // 獲取當前的用戶 Subject subject = SecurityUtils.getSubject(); // 對密碼進行MD5鹽值加密 String md5Password = new MDPasswordUtil().getMDPasswordUtil(userName, userPassword); // 封裝用戶的登錄數據 UsernamePasswordToken token = new UsernamePasswordToken(userName, md5Password); //rememberme記住我 token.setRememberMe(true); try { // 登錄,驗證,保存令牌 subject.login(token); //查詢登錄信息 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq('user_name', userName); User user = userService.getOne(wrapper); //保存登錄用戶信息 session.setAttribute(user.getUserId().toString(), user); return 'admin'; } catch (UnknownAccountException e) { model.addAttribute('userError', '用戶名錯誤!請重新輸入。'); return 'login'; } catch (IncorrectCredentialsException ice) { model.addAttribute('pwError', '密碼錯誤!請重新輸入。'); return 'login'; } }

控制層用戶郵件驗證碼密碼登錄

// 用戶郵箱登錄 @PostMapping('/emailLogin') public String emailLogin(@RequestParam('userEmail') String userEmail,@RequestParam('emailCode') String emailCode,HttpSession session, Model model) { // 根據userEmail從session中取出發送的驗證碼 String sendEmailCode = (String) session.getAttribute(userEmail); // 比對驗證碼 if (StringUtils.isNoneBlank(sendEmailCode) && sendEmailCode.equals(emailCode)) { try { UserEmailToken token = new UserEmailToken(userEmail); //rememberme記住我 token.setRememberMe(true); // 登錄,驗證,保存令牌 Subject subject = SecurityUtils.getSubject(); subject.login(token); //查詢登錄信息 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq('user_email', userEmail); User user = userService.getOne(wrapper); //保存登錄用戶信息 session.setAttribute(user.getUserId().toString(), user); // 銷毀驗證碼 session.removeAttribute(emailCode); return 'admin'; } catch (Exception e) { model.addAttribute('error', '驗證碼錯誤!請重新輸入。'); return 'login'; } } else { return 'login'; } }

SpringBoot 整合 Shiro 密碼登錄與郵件驗證碼登錄(多 Realm 認證)就可以了 (有點多,哈哈哈)

推薦大神:狂神說Java

到此這篇關于SpringBoot 整合 Shiro 密碼登錄與郵件驗證碼登錄(多 Realm 認證)的文章就介紹到這了,更多相關SpringBoot 整合 Shiro登錄內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产成人影院 | 国产91看片| 33eee在线视频免费观看 | 亚洲欧美激情精品一区二区 | 91aiai| 日韩在线播放一区二区 | 色综合天天综合网国产成人网 | 成人免费视频视频 | 在线免费看a| 91精品国产日韩91久久久久久 | 日本一区二区高清不卡 | 一区二区免费视频观看 | 国产欧美一二三区在线粉嫩 | 婷婷免费在线观看 | 欧美激情网站 | 三级色网站 | 久久久精品国产 | 精品久久久久久久久久久久久久 | 九九人人| 日韩免费福利视频 | 一区二区视频网站 | 国产情侣自拍啪啪 | 欧洲精品视频在线观看 | 亚洲自拍偷拍精品 | 性大毛片视频 | 欧美精品一区二区三区一线天视频 | 一级视频网站 | 日韩一区二区视频 | 午夜影院免费视频 | 精品久久久av | 色伊人久久 | 国精品一区 | 美女张开腿视频网站免费 | 亚洲精品一区二区三区中文字幕 | 天天天干夜夜夜操 | 亚洲精品一区二区三区中文字幕 | 成人久久18免费观看 | 毛片在线免费 | 欧美日韩视频一区二区 | 99久久久久国产精品免费 | 久久久久久久国产精品 | 午夜精品视频在线观看 | 国产精品.xx视频.xxtv | 日韩欧美久久 | 成人精品三级av在线看 | japanhd熟睡侵犯 | 污视频在线免费观看 | 久久久毛片 | 91精品国产欧美一区二区成人 | 亚洲精品一区二区三区在线观看 | 免费一区| 欧美日韩在线免费观看 | 国产精品欧美一区二区三区不卡 | 四虎永久在线 | 欧美日韩一区二区三区在线电影 | 久久久tv | 日韩一区二区在线播放 | 久久国产精品精品国产 | 99青青草 | 中文字幕av一区二区三区免费看 | 精品久久久久久久久久久久久久 | 在线一区观看 | 一区不卡| 精品国产欧美 | 欧美成人高清视频 | 麻豆久久| 国产精品一区二区三区四区 | 久草在线| av影音在线 | 欧美一级免费 | 精品免费久久 | 欧美日韩视频在线观看一区 | 久久免费视频国产 | 久久精品久久久 | 99r精品在线 | 91.成人天堂一区 | 国产成年免费视频 | av天天网 | 国产高清在线观看 | 久久精品一区二区三区四区 | 国产欧美综合一区二区三区 | 国产午夜精品久久久久久久 | 亚洲一区中文字幕 | 伊人网影院| 日本不卡精品 | 欧美 日韩 国产 一区 | 91精品国产自产精品男人的天堂 | 99re热精品视频 | 99成人| а_天堂中文最新版地址 | 国产精品视频网站 | 中文字幕一区二区三 | 一级女性全黄久久生活片免费 | 国产精品免费一区二区三区四区 | 91午夜精品 | 国产精品乱码一二三区的特点 | 日韩一区二区三区在线观看 | 性视频一区 | 国内精品一区二区 | 国产成人影视 | 亚洲精品成人在线 | 日日爱夜夜爱 | 精品国产黄a∨片高清在线 99热婷婷 | 欧美日韩一区二区三区在线观看 | 精品三级三级三级三级三级 | 国产美女福利在线 | 中文字幕免费在线 | youjizz国产 | 精品国产一区二区三区久久久蜜月 | 九九久久久| 在线国产欧美 | 青青草免费在线视频 | 在线成人av观看 | 精品国产欧美一区二区三区成人 | 伊人激情综合网 | 国产高清在线精品一区二区三区 | 成人午夜精品久久久久久久蜜臀 | 欧美一区2区三区3区公司 | 精品无码久久久久国产 | 国产精品毛片久久久久久久 | 国产精品久久久久久久岛一牛影视 | 欧美激情一区二区三区四区 | 亚洲一区中文字幕在线观看 | 欧美9999| 午夜寂寞福利视频 | 久久精品二区 | 北条麻妃99精品青青久久主播 | 免费观看国产精品 | 久久久毛片 | 久久国产一区二区三区 | 亚州精品天堂中文字幕 | 日韩特黄一级欧美毛片特黄 | 狠狠干美女| 这里有精品视频 | 成人亚洲一区二区 | 亚洲国产精品一区二区第一页 | 91精品国产91久久综合桃花 | 噜噜噜噜噜在线视频 | 欧美乱淫 | 国产精品一区二区视频 | 欧美片网站免费 | 亚洲三级网站 | 亚洲成年片 | 99视频这里有精品 | 欧美激情在线播放 | 黄色一级免费电影 | 超碰激情| 最近免费中文字幕大全免费版视频 | 欧美亚洲啪啪 | av一区二区三区四区 | 日本黄色免费大片 | 亚洲二区在线播放 | 中文字幕日韩欧美 | 久久一区二区三区四区 | 夜夜夜操操操 | 免费中文字幕 | 卡通动漫第一页 | 夜夜精品视频 | 国产亚洲精品精品国产亚洲综合 | 九九色影院 | 国产一区二区在线播放 | 欧美自拍视频 | 成人a网| 伊人网站| 狠狠视频 | 亚洲精品资源在线观看 | 99精品欧美一区二区三区综合在线 | 日韩在线视频在线观看 | 免费网站看v片在线a | 91国产精品| 亚洲综合视频在线 | 欧美盗摄| 1区在线| 日韩一区精品视频 | 亚洲精彩视频 | 中文字幕av一区二区三区 | 一级黄色毛片免费观看 | 免费看国产一级特黄aaaa大片 | 欧美日韩精品久久久 | 亚洲国产精品18久久 | 国产一区中文字幕 | 免费国产视频 | 老牛嫩草一区二区三区眼镜 | 黄色网亚洲 | 国产精品一码二码三码在线 | 亚洲精品视频在线播放 | 中文字幕高清在线 | 99久久婷婷 | 在线免费观看色视频 | 99爱免费观看 | 亚洲国产精品一区二区第一页 | 国产精品一区二区在线看 | 中文字幕亚洲欧美日韩在线不卡 | 激情久久久久 | 色婷婷一区二区三区四区 | 性一交一乱一透一a级 | 91电影在线观看 | 国产一区亚洲 | 日韩福利在线观看 | 亚洲欧美日韩精品久久奇米色影视 | av电影中文字幕在线观看 | 中文字幕视频在线观看 | 亚洲精品成人在线 | 99爱视频| 我和我的祖国电影在线观看免费版高清 | 成人在线免费视频 | 国产一区久久精品 | 91丨九色丨国产在线 | 91日韩精品一区二区三区 | 日韩欧美一区二区三区免费观看 | 国产精品久久久久国产a级 99精品欧美一区二区三区综合在线 | 国产一区二区在线看 | 色官网 | 国产精品一卡二卡三卡 | 日韩高清黄色 | 亚洲免费a | 国产三级黄色毛片 | 麻豆沈芯语在线观看 | 91精品国产福利在线观看 | 亚洲社区在线 | 国产精品国产三级国产aⅴ9色 | 亚洲视频一区在线 | 国产亚洲网站 | 天堂免费在线 | 五月激情六月婷婷 | 国产99久| 中文字幕av网 | 国产精品国产精品国产专区不蜜 | 久久免费视频观看 | 91久久极品 | 欧美成人在线影院 | 久久国产精品久久 | 一级欧美片 | 日韩高清av | 欧美一区第一页 | 日本午夜在线 | 国产精品毛片久久久久久久 | 国产欧美日韩综合精品一区二区 | 精品久久一区 | 国产超碰人人模人人爽人人添 | www.天天操.com| 国产一区二区三区四区视频 | 91精品国产综合久久精品 | 成人久久久久久久久 | 亚洲麻豆| 国内精品视频一区国产 | 欧美日韩国产一区二区三区不卡 | 欧美一区二区二区 | 亚洲人人| 亚洲精品一区二区 | 五月激情综合网 | 日韩在线成人 | 六月丁香啪啪 | 激情久久av一区av二区av三区 | 国产精品69久久久久水密桃 | 99国产精品99久久久久久 | 久久精品一区二区三区四区 | 欧美性猛交一区二区三区精品 | 韩日视频在线观看 | 国产www精品| 亚洲精品系列 | 精品无码久久久久久国产 | 亚洲成人精品 | 2019天天干夜夜操 | 精品九九 | 欧美一级免费 | 午夜国产精品视频 | 久久777 | 一区二区国产精品 | 国产艳妇av视国产精选av一区 | 久热九九 | 日韩美香港a一级毛片免费 国产综合av | 日韩精品一区二区三区 | 欧美久久一区二区三区 | 亚洲www视频| a在线播放| 国产精品精品 | 羞羞视频免费观看 | 亚洲视频在线看 | 国产精品第一 | 日韩视频三区 | 电影91久久久 | 日韩中文字幕在线看 | 国产精品一区二区在线观看 | 视频一区二区三区在线播放 | 精品三级在线观看 | 中文字幕 国产精品 | 亚洲成人免费网址 | 日本午夜在线 | 亚洲一区欧美一区 | 国产激情性色视频在线观看 | 国产精品美女www爽爽爽动态图 | 亚洲第一天堂无码专区 | 久久精品综合 | 国产精品不卡 | 成人精品网站在线观看 | 女人毛片a毛片久久人人 | 久久久高清 | 成人一区二区av | 2018国产大陆天天弄 | 精品国产一区二区三区久久 | 亚洲欧美综合乱码精品成人网 | 91在线精品一区二区 | 国产一区二区三区四区在线观看 | 亚洲精品久久 | 黄色在线免费看 | 日韩视频免费在线 | 国产午夜精品久久久久久久 | 夜夜骑av| 2021狠狠干| 成人激情视频在线免费观看 | 成人在线激情 | 欧美1区| 久久国产综合 | 久久99国产精品久久99大师 | 这里只有精品视频 | 国产亚洲成av人片在线观看桃 | 国产高清视频一区二区 | 中文一区二区 | 久久精品国产亚洲一区二区三区 | 国产激情视频网 | 亚洲国产精品网站 | 一区二区在线免费观看 | 粉嫩高清一区二区三区精品视频 | 日韩精品2区 | 精品久久久久久久久久久久久久 | 久草免费在线视频 | 在线小视频 | 国产免费av在线 | 91久久国产精品 | 欧美日韩一级电影 | 国产一区二区三区久久久久久久久 | 华丽的挑战在线观看 | 日韩精品视频在线播放 | 国产一区二区三区欧美 | 久久精品二区 | 成人在线视频播放 | 精品二区 | 日日综合 | 91精品国产一区二区 | 欧美激情国产日韩精品一区18 | 精品一区二区三区免费毛片 | 国产精品乱码一区二区三区 | 日韩1区3区4区第一页 | 国产一区二区三区免费在线 | 色接久久 | 国产激情偷乱视频一区二区三区 | 国产精品久久久久久久久污网站 | 欧美在线观看黄 | 国产一区a | av在线一区二区 | 综合二区 | 91精品国产自产91精品 | 亚洲精选久久 | 久在线观看 | 午夜免费看片 | 草草成人 | 成年人免费看片 | 日本妇人成熟免费视频 | 日韩视频一区二区三区 | 狠狠操夜夜操 | 日本免费视频 | 亚洲乱码在线 | 成人欧美一区二区三区在线播放 | 自拍视频网 | 伊人激情影院 | 国产一区亚洲 | 精品国产91久久 | 久久久91精品国产一区二区精品 | 国产免费看| 婷婷久久综合 | 久久久日本 | 免费在线一区二区三区 | av在线一区二区三区 | 亚洲国产精品一区二区久久,亚洲午夜 | av在线成人| 在线观看成人小视频 | 国产成人在线视频 | 成人福利在线 | 国产传媒日韩欧美 | 日韩一区在线视频 | 国产日韩欧美一区 | 久久久国产一区二区 | 国产一区二区精品丝袜 | 欧美狠狠操 | 91av国产在线视频 | 91久久精品国产91久久性色tv | 7777奇米影视| 国产综合亚洲精品一区二 | 不卡的一区二区 | 日本成片视频 | www.44181com | av在线播放国产 | 日韩免费一区二区 | 蜜桃视频网站在线观看 | 亚洲成人影院在线观看 | 91精品国产一区二区 | 久久久精品综合 | 免费不卡视频 | 亚洲美女网址 | 亚洲视频一 | 91精品国产日韩91久久久久久 | 在线中文字幕av | 亚洲欧美日韩在线一区 | 成人av网站在线观看 | 国产精品久久久爽爽爽麻豆色哟哟 | 草久久av | 国产成人精品一区二区三区视频 | 中文字幕加勒比 | 亚洲午夜在线 | 毛片网站在线观看 | 欧美性一区二区 | 五月天婷婷色综合 | 视频1区| 国产农村妇女精品一二区 | 欧美亚洲国产一区 | 欧美在线观看一区 | 天天碰天天操 | 久草免费在线 | 日日干天天干 | www成人精品| 麻豆自拍偷拍 | 在线日韩视频 | 久久久国产精品入口麻豆 | 久草在线资源福利站 | 亚洲男人的天堂网站 | 中文字幕亚洲一区 | 色久天堂| 亚洲精品电影在线观看 | 欧美中文字幕一区 | 欧美久久久 | 亚洲另类小视频 | 亚洲91 | av在线免费播放 | 成人在线一区二区 | 亚洲电影在线看 | 色婷婷网 | 国产精品粉嫩白浆在线观看 | 亚洲综合首页 | 91久久精品| 一区二区亚洲 | 久久人操 | 国产aⅴ一区二区 | 日韩中文字幕在线播放 | 黄色一级在线播放 | 精品成人av | 日韩福利电影 | 羞视频在线观看 | 日韩精品av一区二区三区 | 国产色网站 | 午夜夜| 97视频免费在线观看 | 国产精品久久久久久久久久小说 | 国外成人在线视频网站 | 久久三区 | 久久久成 | 亚洲国产精品麻豆 | 日韩精品亚洲专区在线观看 | 黄色在线免费观看 | 欧美成人黄色小说 | 日韩免费视频一区二区 | 7799精品视频 | 国产成人精品一区二区在线 | 精品99久久| 一区二区久久 | 日本三级中文在线电影 | 色偷偷888欧美精品久久久 | 午夜视频在线 | 中文在线一区二区 | 日本成人片网站 | av片在线观看 | 亚洲国产成人av好男人在线观看 | 亚洲免费在线看 | 激情999 | 国产精品成av人在线视午夜片 | 久久精品欧美一区二区三区不卡 | 中文字幕一区二区三区乱码在线 | 午夜精品久久久久久 | 一区二区视频 | 久久在线视频 | 九九久久久 | 激情欧美日韩一区二区 | 91久久久久久久久久久 | 精品久久一区二区 | 久草福利资源 | 精品影院| 国产精品午夜在线观看 | 成年人性视频 | 成年人免费看 | 国产成人精品久久 | 国产日产精品一区二区三区四区 | 午夜精品久久 | 7799精品视频| 精品国产髙清在线看国产毛片 | 一级毛片免费播放 | 日韩av电影网| 99国产精品一区 | 香蕉久久一区二区不卡无毒影院 | 国产福利91精品一区二区 | 亚洲怡红院在线观看 | 亚洲精品a| 欧美日韩在线免费观看 | 福利视频一区二区三区 | 国产精品久久久久无码av | 日韩一区中文字幕 | 成人国产精品视频 | 91香蕉视频在线观看 | 最新av在线网址 | 91在线看片| 欧美在线视频不卡 | 奇米亚洲午夜久久精品 | 亚洲国产成人精品女人 | 国产小视频在线播放 | 中文字幕乱码亚洲精品一区 | 国内精品一区二区三区视频 | 久久久久久亚洲国产 | 中文字幕在线第二页 | 免费观看的av | 欧美日韩一区在线观看 | 午夜tv | 久久久国产一区二区三区 | 不卡av电影在线观看 | 日韩成人av在线 | 欧美精品久久久久 | 九色在线观看 | av免费网站在线观看 | 日日操天天爽 | 操人网| 欧美成人高清视频 | 午夜精品一区二区三区在线视频 | 99热这里有精品 | 蜜桃视频精品 | 久久久成人av | 在线视频日韩 | 欧美一区二区三区在线观看视频 | 亚洲精品美女在线观看 | 亚洲在线视频 | 超碰官网| 婷婷色狠狠 | 台湾av片| 亚州av在线| 亚洲精品女人久久 | 欧美福利电影在线观看 | 亚洲精品一区二三区不卡 | 国产激情视频在线 | 欧美日日| 亚洲自拍在线观看 | 国产精品久久一区二区三区 | 蜜桃av人人夜夜澡人人爽 | 久久亚洲一区 | 一区二区在线影院 | 日韩专区一区二区三区 | 亚洲成人精品 | 精品国产一区二区三区久久久蜜 | 国产精品999| 少妇淫片aaaaa毛片叫床爽 | 成人黄色片在线观看 | 欧美日韩精品 | 中文字幕精品一区二区三区精品 | 亚洲国产精品久久 | 中国黄色毛片 大片 | 在线视频第一页 | 午夜视频在线观看网址 | 日本午夜精品 | 国产成人精品一区二区三区视频 | 欧美一级免费看 | 成人精品网站在线观看 | 国产91综合一区在线观看 | 成人av网站免费观看 | 亚洲国产精品久久久久婷婷老年 | 成人日韩| 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 久操成人| 中文字幕av一区二区三区免费看 | 欧美日韩国产精品 | 九九久久国产 | 99爱在线观看 | 亚洲欧美国产精品久久久久 | 亚洲欧美日韩另类精品一区二区三区 | 中文字幕av第一页 | 亚洲国产精品久久久久婷婷老年 | 亚洲在线观看免费视频 | 在线看www| 久草新免费 | 欧美在线一区二区三区 | 国产传媒毛片精品视频第一次 | 中文精品在线 | 在线国产区 | 久久久久免费观看 | 亚洲午夜精品一区二区三区他趣 | 亚洲视频久久久 | 美女视频黄色 | 日韩免费在线观看视频 | 亚洲精品一区二区三区中文字幕 | 日本一区二区视频 | 国产91在线观看 | 久久夜视频 | 亚洲一区二区三区在线播放 | 99久久这里只有精品 | 国产午夜精品一区二区三区视频 | 特黄特黄aaaa级毛片免费看 | 欧美日韩亚洲综合 | 国产激情在线观看视频 | 午夜精品久久久久久久久 | 一区二区免费播放 | 97人人做人人人难人人做 | 成人av教育| 日韩精品一区二区三区中文字幕 | 国产精品久久久久久吹潮 | 久久久久网站 | 天天综合网91| 久久久久999 | 亚洲精品免费在线观看 | 国内自拍视频在线观看 | 国产精品美女在线观看 |