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

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

SpringBoot配置shiro安全框架的實現

瀏覽:79日期:2023-03-14 18:03:14

首先引入pom

<!--SpringBoot 2.1.0--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> </parent> <!--shiro--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>${shiro.version}</version> </dependency> <!-- shiro-redis --> <dependency> <groupId>org.crazycake</groupId> <artifactId>shiro-redis</artifactId> <version>3.1.0</version> </dependency> <!-- shiro-freemarker-tag --> <dependency> <groupId>net.mingsoft</groupId> <artifactId>shiro-freemarker-tags</artifactId> <version>1.0.0</version> </dependency> <!-- freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>

ShiroConfig.java

package com.jx.cert.web.framework.config.shiro;import java.util.LinkedHashMap;import java.util.Map;import javax.servlet.Filter;import org.apache.shiro.authc.credential.HashedCredentialsMatcher;import org.apache.shiro.cache.MemoryConstrainedCacheManager;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.session.mgt.SessionManager;import org.apache.shiro.spring.LifecycleBeanPostProcessor;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.crazycake.shiro.RedisCacheManager;import org.crazycake.shiro.RedisManager;import org.crazycake.shiro.RedisSessionDAO;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.DependsOn;import com.jx.cert.web.framework.config.shiro.filter.KickoutSessionControlFilter;import com.jx.cert.web.framework.config.shiro.filter.ShiroPermissionsFilter;import com.jx.cert.web.framework.config.shiro.filter.SystemLogoutFilter;import com.jx.common.utils.CacheConstants;/*** @ClassName: gyu * @Description: TODO(shrio配置) * @author gangyu* @date 2018年12月4日 下午2:28:07 */@Configurationpublic class ShiroConfig { Logger log=LoggerFactory.getLogger(ShiroConfig.class); @Value('${spring.redis.host}') private String host; @Value('${spring.redis.prot}') private int port; @Value('${spring.redis.timeout}') private int timeout; @Value('${spring.redis.password}') private String password; @Value('${spring.redis.database}') private int database; //注意這里需要設置成 static 否則 @Value 注入不了數據 @Bean(name = 'lifecycleBeanPostProcessor') public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {return new LifecycleBeanPostProcessor(); } @Bean(name = 'shiroFilter') public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); log.debug('-----------------Shiro攔截器工廠類注入開始'); Map<String,Filter> filterMap=shiroFilterFactoryBean.getFilters(); //權限過濾器 filterMap.put('perms', new ShiroPermissionsFilter()); shiroFilterFactoryBean.setFilters(filterMap); // 配置shiro安全管理器 SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); // 指定要求登錄時的鏈接 shiroFilterFactoryBean.setLoginUrl('/login'); // 登錄成功后要跳轉的鏈接 shiroFilterFactoryBean.setSuccessUrl('/index'); // filterChainDefinitions攔截器=map必須用:LinkedHashMap,因為它必須保證有序 Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(); //對外應用開發接口不驗證 filterChainDefinitionMap.put('/app/**', 'anon');filterChainDefinitionMap.put('/ajaxLogin', 'anon');// 放開驗證碼 filterChainDefinitionMap.put('/public/getGifCode', 'anon'); // 退出 filterChainDefinitionMap.put('/logout', 'logout'); //TODO 全部放行// filterChainDefinitionMap.put('/manage/**', 'anon[*]'); //公共資源filterChainDefinitionMap.put('/static/**', 'anon');filterChainDefinitionMap.put('/css/**', 'anon');filterChainDefinitionMap.put('/img/**', 'anon');filterChainDefinitionMap.put('/js/**', 'anon'); // authc:所有url都必須認證通過才可以訪問; filterChainDefinitionMap.put('/**', 'authc'); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); log.debug('-----------------Shiro攔截器工廠類注入成功'); return shiroFilterFactoryBean; }@Bean public HashedCredentialsMatcher hashedCredentialsMatcher() {HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();hashedCredentialsMatcher.setHashAlgorithmName('MD5');//散列算法:這里使用MD5算法;hashedCredentialsMatcher.setHashIterations(1);//散列的次數,比如散列兩次,相當于 md5(md5(''));return hashedCredentialsMatcher; } //權限緩存到內存 @Bean(name = 'shiroRealm') @DependsOn('lifecycleBeanPostProcessor') public MyShiroRealm myShiroRealm() {MyShiroRealm myShiroRealm = new MyShiroRealm();myShiroRealm.setCacheManager(new MemoryConstrainedCacheManager());myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());return myShiroRealm; }@Bean(name = 'securityManager') public SecurityManager securityManager() {DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();securityManager.setRealm(myShiroRealm());// 自定義session管理 使用redissecurityManager.setSessionManager(sessionManager());// 自定義緩存實現 使用redissecurityManager.setCacheManager(cacheManager());return securityManager; }/** * 配置shiro redisManager * @return */ public RedisManager redisManager() {RedisManager redisManager = new RedisManager();redisManager.setHost(host);redisManager.setPort(port);redisManager.setTimeout(timeout);//redisManager.setPassword(password);redisManager.setDatabase(database);return redisManager; }//自定義sessionManager @Bean public SessionManager sessionManager() {MySessionManager mySessionManager = new MySessionManager();mySessionManager.setSessionDAO(redisSessionDAO());//默認1個小時session過期mySessionManager.setGlobalSessionTimeout(CacheConstants.SHIRO_SESSION_MS);return mySessionManager; } /** * RedisSessionDAO shiro sessionDao層的實現 通過redis */ @Bean public RedisSessionDAO redisSessionDAO() {RedisSessionDAO redisSessionDAO = new RedisSessionDAO();redisSessionDAO.setRedisManager(redisManager());return redisSessionDAO; } /** * cacheManager 緩存 redis實現 * @return */ @Bean public RedisCacheManager cacheManager() {RedisCacheManager redisCacheManager = new RedisCacheManager();redisCacheManager.setRedisManager(redisManager());redisCacheManager.setExpire(CacheConstants.USER_DATA_TTL);return redisCacheManager; } }

MyShiroRealm.java

package com.jx.cert.web.framework.config.shiro;import java.util.ArrayList;import java.util.List;import org.apache.commons.codec.digest.DigestUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import org.apache.shiro.authc.AuthenticationToken;import org.apache.shiro.authc.LockedAccountException;import org.apache.shiro.authc.SimpleAuthenticationInfo;import org.apache.shiro.authc.UnknownAccountException;import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.authz.SimpleAuthorizationInfo;import org.apache.shiro.realm.AuthorizingRealm;import org.apache.shiro.subject.PrincipalCollection;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import com.jx.cert.web.framework.config.shiro.exception.SysUsreNotLoginAPPException;import com.jx.cert.web.framework.config.shiro.exception.SystemNotExistException;import com.jx.common.utils.SysCode;import com.jx.core.api.model.vo.cert.SysPermission;import com.jx.core.api.model.vo.cert.SysRole;import com.jx.core.api.model.vo.cert.SysSystem;import com.jx.core.api.model.vo.cert.SysUser;import com.jx.core.api.service.business.cert.SysPermissionService;import com.jx.core.api.service.business.cert.SysRoleService;import com.jx.core.api.service.business.cert.SysSystemService;import com.jx.core.api.service.business.cert.SysUserService;public class MyShiroRealm extends AuthorizingRealm { private Logger logger = LoggerFactory.getLogger(MyShiroRealm.class); @Autowired private SysUserService sysUserService; @Autowired private SysRoleService sysRoleService; @Autowired private SysPermissionService sysPermissionService; @Autowired private SysSystemService systemService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {logger.info('####################開始配置權限####################');SysUser user = (SysUser) principals.getPrimaryPrincipal();if (user != null) { //權限信息對象info,用來存放查出的用戶的所有的角色(role)及權限(permission) SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); List<String> roleStrlist = new ArrayList<String>();//用戶的角色集合 List<String> perminsStrlist = new ArrayList<String>();//用戶的菜單權限集合 for (SysRole role : user.getRoleList()) {roleStrlist.add(role.getRoleName()); } for (SysPermission permission : user.getPermissList()) {perminsStrlist.add(permission.getUrl()); } //用戶的角色集合 authorizationInfo.addRoles(roleStrlist); //用戶的菜單按鈕權限集合 authorizationInfo.addStringPermissions(perminsStrlist); return authorizationInfo;}return null; } /*主要是用來進行身份認證的,也就是說驗證用戶輸入的賬號和密碼是否正確。*/ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {logger.info('####################身份認證####################');String userStr = (String) token.getPrincipal(); SysUser user = sysUserService.getUserByUserName(userName); //認證系統用戶List<SysRole> roleList = sysRoleService.findRoleByUserId(user.getUserId(),systemId);user.setRoleList(roleList);//獲取用戶角色List<SysPermission> list=sysPermissionService.getUserPermission(user.getUserId(),systemId);SysPermission permis=new SysPermission();list.add(permis);user.setPermissList(list);//獲取用戶權限 return new SimpleAuthenticationInfo(user, DigestUtils.md5Hex(user.getPassword()),getName()); }}

ShiroTagsFreeMarkerCfg.java

package com.jx.cert.web.framework.config.shiro;import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import com.jagregory.shiro.freemarker.ShiroTags;import freemarker.template.TemplateModelException;/** * @ClassName: ShiroTagsFreeMarkerCfg * @Description: TODO(ftl shiro 標簽) * @author gangyu* @date 2018年12月5日 下午5:16:27 * */@Componentpublic class ShiroTagsFreeMarkerCfg { @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; @PostConstruct public void setSharedVariable() throws TemplateModelException {freeMarkerConfigurer.getConfiguration().setSharedVariable('shiro', new ShiroTags()); }}

ShiroPermissionsFilter.java

/** * @Title: ShiroPermissionsFilter.java * @Package com.jx.cert.web.config.shiro * @Description: TODO(用一句話描述該文件做什么) * @author gangyu* @date 2018年12月5日 上午11:47:00 * @version V1.0 */package com.jx.cert.web.framework.config.shiro.filter;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.google.gson.Gson;import com.jx.cert.web.framework.config.shiro.ShiroUtil;import com.jx.common.utils.Result;import com.jx.common.utils.enums.CodeEnum;import com.jx.core.api.model.vo.cert.SysPermission;import com.jx.core.api.model.vo.cert.SysUser;/** * @ClassName: ShiroPermissionsFilter * @Description: TODO(權限驗證) * @author gangyu* @date 2018年12月5日 上午11:47:00 */public class ShiroPermissionsFilter extends PermissionsAuthorizationFilter { private static final Logger logger = LoggerFactory.getLogger(ShiroPermissionsFilter.class);/** * 權限檢測驗證 */ @Override protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException {logger.info('----------權限校驗-------------');HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String reqUrl=request.getRequestURI();List<SysPermission> permsList=ShiroUtil.getUser().getPermissList();String contextPath=request.getContextPath();reqUrl=reqUrl.substring(contextPath.length()+1, reqUrl.length());String header = request.getHeader('X-Requested-With');boolean isAjax = 'XMLHttpRequest'.equals(header);SysUser user=ShiroUtil.getUser(); if(!new Gson().toJson(permsList).contains(reqUrl)){ if (isAjax) {logger.info('----------AJAX請求拒絕-------------');response.setCharacterEncoding('UTF-8');response.setContentType('application/json');response.getWriter().write(new Gson().toJson(new Result(CodeEnum.NOT_PERMISSION))); } else {logger.info('----------普通請求拒絕-------------');response.sendRedirect(request.getContextPath()+'/403'); } return false;}else { return true;} }}

ShiroUtil.java

package com.jx.cert.web.framework.config.shiro;import org.apache.shiro.SecurityUtils;import org.apache.shiro.session.Session;import org.apache.shiro.subject.Subject;import com.jx.core.api.model.vo.cert.SysUser;public class ShiroUtil { /** * 獲取當前 Subject * * @return */ public static Subject getSubject() {return SecurityUtils.getSubject(); } /** * 獲取shiro指定的sessionKey * * @param key * @param <T> * @return */ public static <T> T getSessionAttr(String key) {Session session = getSession();return session != null ? (T) session.getAttribute(key) : null; } /** * 設置shiro指定的sessionKey * * @param key * @param value */ public static void setSessionAttr(String key, Object value) {Session session = getSession();session.setAttribute(key, value); } /** * 獲取當前用戶對象 * * @return */ public static SysUser getUser() { if(getSubject().isAuthenticated()){ return (SysUser) getSubject().getPrincipals().getPrimaryPrincipal(); } return null; } /** * 獲取當前用戶對象UserID * * @return */ public static String getUserId() {return getUser().getUserId(); } /** * 移除shiro指定的sessionKey * * @param key */ public static void removeSessionAttr(String key) {Session session = getSession();if (session != null) session.removeAttribute(key); } /** * 驗證當前用戶是否屬于該角色 * * @param roleName 角色名稱 * @return 屬于該角色:true,否則false */ public static boolean hasRole(String roleName) {return getSubject() != null && roleName != null&& roleName.length() > 0 && getSubject().hasRole(roleName); } /** * shiro 中獲取session * * @return session */ public static Session getSession() {return getSubject().getSession(); } /** * 驗證當前用戶是否屬于以下所有角色 * 多權限“,”分割 * * @param roleNames 權限名稱 * @return 屬于:true,否則false */ public static boolean hasAllRoles(String roleNames) {boolean hasAllRole = true;Subject subject = getSubject();if (subject != null && roleNames != null && roleNames.length() > 0) { for (String role : roleNames.split(',')) {if (!subject.hasRole(role.trim())) { hasAllRole = false; break;} }}return hasAllRole; } /** * 驗證當前用戶是否屬于以下任意一個角色 * 多權限“,”分割 * @param roleNames * @return */ public static boolean hasAnyRoles(String roleNames) {boolean hasAnyRole = false;Subject subject = getSubject();if (subject != null && roleNames != null && roleNames.length() > 0) { for (String role : roleNames.split(',')) {if (subject.hasRole(role.trim())) { hasAnyRole = true; break;} }}return hasAnyRole; }}

到此這篇關于SpringBoot配置shiro安全框架的實現的文章就介紹到這了,更多相關SpringBoot配置shiro內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 97久久精品人人做人人爽50路 | 麻豆亚洲| 日韩av一级片| 亚洲高清视频在线观看 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 久久免费精品视频 | 久久亚洲综合 | 亚洲一区二区三区四区在线 | 狠狠色综合久久丁香婷婷 | 午夜影院免费看 | 国产精品久久久久久久久久妇女 | 国产精品久久久久久福利一牛影视 | 日韩欧美精品一区 | 久久久97 | 羞羞视频在线观免费观看 | 国产精久 | 看a网址 | 资源av| 亚洲综合无码一区二区 | 国产欧美精品一区二区三区 | 国产精品久久久av | 亚洲毛片在线 | 亚洲一区中文字幕 | 成人网电影 | 久久天堂 | 国产精品99在线观看 | 国内精品国产成人国产三级粉色 | 一区二区精品视频在线观看 | 91午夜精品 | 久久国产精品99精国产 | 操网 | 99精品在线观看 | 亚洲一区二区精品视频 | 久久精品久久久 | 一级人爱视频 | 国内久久精品视频 | 欧美精品导航 | 精品久久久久久久久久 | 一级网站在线观看 | 欧美色综合一区二区三区 | 久久亚洲一区二区三区四区 | av黄在线观看 | 精品久| 夜夜操导航 | 亚洲精品久久久一区二区三区 | av中文字幕在线 | 欧美性v | 精品久久一区 | 免费观看一级毛片 | 国产第一二区 | 亚洲精品在线播放 | 97在线观看视频 | 国产亚洲成av人片在线观看桃 | 黑人巨大精品欧美一区二区免费 | 亚洲精品一二三区 | 九九久久精品视频 | 亚洲国产精品一区二区久久 | 日日干天天操 | 天堂在线一区二区 | 97成人精品视频在线观看 | 九九在线国产视频 | 国产在线1| 精品96久久久久久中文字幕无 | 国产二区免费 | 91久久久久 | 久久男人| 日韩成人免费av | 成人精品视频 | 国产三级视频 | 日韩在线国产精品 | 亚洲精品国产乱码在线看蜜月 | 精品免费国产一区二区三区 | 国产精品高潮呻吟久久av黑人 | 国产综合精品 | 日韩福利| 日韩综合网 | 日韩欧美高清dvd碟片 | 欧美成人福利 | 国产精品视频久久久 | 97人人做人人人难人人做 | 久久精品日产高清版的功能介绍 | 黄色在线免费观看 | 中文字幕在线永久 | 亚洲欧美一区二区三区视频 | 国产免费天天看高清影视在线 | 久久99深爱久久99精品 | 国产精久久久久久久妇剪断 | 91国内精品久久 | 欧美高清一区 | 日韩精品视频在线播放 | 亚洲午夜精品一区二区三区他趣 | 日本久久久久久 | 一区二区中文字幕 | 日韩免费| av国产精品| 午夜在线视频 | 久久毛片| 天天插天天操天天干 | 一区二区三区日韩 | 黄色免费av | 永久黄网站色视频免费 | 91精品国产欧美一区二区成人 | 一级片观看 | 国产精品亚洲精品日韩已方 | 国产偷国产偷精品高清尤物 | 91网站在线看 | 成人美女免费网站视频 | 国产精品视频一区二区三区 | 日韩在线视频网站 | 国产日韩精品在线 | 日日日日日 | 国产精品久久久久久中文字 | 亚洲欧洲无码一区二区三区 | 午夜激情视频在线观看 | 久久av资源 | 欧美怡红院视频一区二区三区 | 97视频人人澡人人爽 | 久久com | 国产精品一品二区三区的使用体验 | 亚洲精彩视频 | 91天堂在线观看 | 激情毛片| 欧美一区二区三区免费在线观看 | 97视频精品 | 草久网| 亚洲欧美日韩国产综合精品二区 | 成人在线免费观看视频 | 欧美五月| 久草视频在线播放 | 99视频免费播放 | 亚洲成人网一区 | 精品国模一区二区三区欧美 | 91视频原创| 久久青青 | 欧美 日韩 国产 一区 | 亚洲一区二区三区 | 亚洲高清视频在线 | 日韩一区在线播放 | 日韩伦理一区二区 | 国产精品一区二区三 | 亚洲免费在线视频 | 一级a性色生活片久久毛片波多野 | 国产高清在线精品 | 亚洲精品亚洲人成人网 | 国际精品久久 | 久久久久久久一区 | 中文字幕一区二区三区精彩视频 | 人人爱超碰 | 久久9热| 中文一二区 | 欧日韩免费 | 成人一级黄色大片 | 超级碰在线视频 | 日韩精品一二三 | 在线观看视频一区二区三区 | 久草精品在线观看 | 成人免费视频网站在线看 | 成人h视频| 亚洲不卡视频 | 成年入口无限观看网站 | 一级黄色毛片 | 日韩婷婷| 成人av免费看 | 91中文字幕在线 | 亚洲经典视频在线观看 | 国产视频一视频二 | 国产视频一区二区 | 在线观看午夜免费视频 | 国产成人 综合 亚洲 | 中文字幕最新在线 | 欧美日韩成人在线观看 | 蜜桃视频网站在线观看 | 国产精品一卡二卡 | 欧美一性一交 | 亚洲网站视频 | 九九精品视频在线观看 | 精品久久久一区 | 亚州精品天堂中文字幕 | 天操天天干 | 亚洲瑟瑟| 日韩在线二区 | 一区二区在线电影 | 国产第99页 | 91在线入口 | 日本久久精品 | 欧美日韩精品一二区 | 天堂中文视频在线观看 | 久草.com | 欧美精品欧美精品系列 | 国产中文字幕在线 | 日韩欧美在线一区 | 亚洲成人精品在线观看 | 日韩欧美综合 | 日韩一本| 91久久精品 | 国产日韩欧美一区二区 | 性视频网 | 国产日韩欧美视频 | 国产精品禁久久精品 | 91精品久久久久久久久 | 成人h动漫免费观看网站 | 午夜日韩 | 国产精品毛片一区二区三区 | 91午夜精品 | 日韩一区二区黄色片 | jlzzjlzz国产精品久久 | 国产免费自拍 | 国内精品一级毛片国产99 | 日韩精品一区二区三区 | 亚洲第一免费视频网站 | 国产一区二区三区精品久久久 | 啪啪毛片| 国产午夜精品久久久久久久 | 欧美一区二区在线观看 | 免费一级片| 成人免费视频观看视频 | 欧美精产国品一二三区 | 91久久艹| 亚洲国产精品自拍 | 羞羞的视频在线 | 超碰一区 | 日韩av免费| 久热九九| 色综合av| 天天干夜夜操 | 99精品国产高清一区二区麻豆 | 噜噜噜在线观看免费视频日本 | 欧美最猛性xxxxx亚洲精品 | 国产一级一级片 | 在线草| www久久久久久久 | 成人精品电影 | 免费看一区二区三区 | 91国内 | 久久久久久久久久久九 | 国产精品中文字幕在线 | 欧美精品综合 | 亚洲网站久久 | 国产成人99久久亚洲综合精品 | 国产精品中文字幕在线 | 久久久久久亚洲精品 | jjzz18国产 | 日本超碰| 午夜久久视频 | 波多野结衣在线网址 | 国产区视频在线观看 | 在线中文一区 | 成人性视频在线播放 | 久久久久久久99精品免费观看 | 六月丁香在线观看 | 久草观看| 国产精品1区2区 | 成人看片在线 | 成人精品视频99在线观看免费 | 国产高清在线 | 91亚洲国产成人久久精品网站 | 九九热在线视频 | 亚洲一区二区三区四区五区午夜 | 综合久久一区 | 日韩在线视频免费 | 亚洲一区中文字幕在线观看 | 日韩一区久久 | 岛国av免费看 | 成人亚洲免费视频 | 欧美高清一区 | 精品国产黄a∨片高清在线 激情网站免费 | 亚洲精品乱码久久久久久蜜桃不卡 | 国产美女高潮一区二区三区 | 欧美激情一区二区 | 欧美精品一区二区三区在线四季 | 久久精品成人 | a级性生活| www.欧美 | 精品福利av导航 | 国产成人av一区二区三区 | 成人免费视频观看视频 | 日韩一及片 | 亚洲国产成人在线 | 毛片免费网站 | 国产中文在线播放 | 在线观看av国产一区二区 | 91精品国产九九九久久久亚洲 | 欧美日韩中文字幕在线播放 | 亚洲视频1 | 男女免费视频 | 国产成人精品久久 | 男人的天堂视频网站 | 欧美日韩视频 | 久久久夜夜夜 | 国产国拍亚洲精品av | 毛片在线免费播放 | 精品国产乱码久久久久久蜜臀 | 天天操天天摸天天干 | 国产精品视频专区 | 91国内精品 | 国产成人看片 | 亚洲不卡视频 | 欧美午夜精品久久久 | 亚洲精品福利 | 亚洲精品久久久一区二区三区 | 亚洲精品久久久久久一区二区 | 一区二区三区欧美在线 | 综合婷婷| 美女黄在线观看 | 亚洲欧美在线一区 | 日韩欧美一区二区三区 | 成人影视网址 | 国产精品久久久久久久久小说 | 99热日本 | 亚洲va欧美va天堂v国产综合 | 成人久久 | 色综合一区 | 国产精品中文字幕在线播放 | 九九热在线免费视频 | 中文字幕一区二区三区免费视频 | 久久99精品国产99久久6尤 | 亚洲欧美日韩国产综合精品二区 | 香蕉久久夜色精品国产使用方法 | 99re国产| 欧美日韩综合在线 | 国产.com | 日韩中文在线播放 | 精品国产一区二区在线 | 在线观看黄色大片 | 精品亚洲网 | 免费av在线网站 | 久久这里只有精品首页 | 国产91色 | 亚洲 精品 综合 精品 自拍 | 五月网婷婷 | 丝袜久久| 99视频网站| 国产午夜精品视频 | 亚洲一区二区av | 欧美亚洲一区 | 精品三级在线观看 | 国产精品久久国产精品 | 久久午夜电影院 | 久久激情五月丁香伊人 | 亚洲第一男人天堂 | 欧美精品一区二区在线观看 | 欧美综合精品 | 精品国产一区二区三区四 | 亚洲免费在线播放 | 免费成人在线网站 | chinese中国真实乱对白 | 久久久99国产精品免费 | 欧美在线观看一区 | 国产精品毛片久久久久久 | av在线网址观看 | 日韩国产欧美一区 | 久久r精品 | 欧美精品久久久久久久久 | 99精品一级欧美片免费播放 | 中文字幕免费在线 | 亚洲成人一区二区 | 天堂中文资源在线 | 欧美一级片免费播放 | 91一区| 欧美日韩国产一区二区 | 成人视屏在线观看 | 天堂亚洲| 中文字幕乱码亚洲精品一区 | 中文字幕在线第一页 | 免费国产网站 | 伊人伊人 | 在线成人www免费观看视频 | 久久丁香 | 伊人色播 | 国产精品自拍一区 | 免费看一区二区三区 | 91九色视频国产 | 日本黄色一级片免费看 | 国产美女久久 | 国产一区二区三区四区视频 | 国产黄色播放 | 国产精品视频区 | 一级片av| 在线成人免费观看www | 亚洲一区二区在线播放 | 日韩激情免费视频 | 青青久久 | 日韩视频在线免费观看 | 99久久这里只有精品 | 欧美 日韩 国产 成人 在线 | 国产精品欧美一区二区 | 欧美第一页 | 欧美日韩不卡合集视频 | 成人免费一区二区三区视频网站 | 视频网站免费观看 | 在线中文 | 亚洲 中文 欧美 日韩在线观看 | 成人中文字幕在线 | 国产一区在线看 | 国产综合网站 | 精品在线一区二区 | 黄色国产 | 人人射人人插 | 91视频免费播放 | 日韩一区二区福利 | 日本在线视 | 天天操天天操 | 国产特级毛片 | 欧美一区二区免费在线 | 嫩草视频在线播放 | 国产精品久久久久久久久久东京 | 99精品在线 | 久久成人av | 亚洲精品久久久 | 成人精品网站在线观看 | 国产毛片一区二区 | 亚洲一区二区三区精品视频 | 久久久精品高清 | 中文字幕亚洲欧美日韩在线不卡 | 在线免费观看av片 | 国产精品99久久久久 | 米奇成人网 | 久久精品国产亚洲精品 | 四虎精品在线 | 亚洲精品自拍视频 | 午夜在线电影 | 国产精品18久久久久久久久 | 日本精品久久 | 在线成人av观看 | 日韩欧美视频 | 91人人看| 亚洲国产自产 | 国产精品高潮呻吟久久av野狼 | 精品久久久久久亚洲综合网 | 国产亚洲精品久久久456 | 在线观看国产wwwa级羞羞视频 | 日韩城人网站 | 日韩理论在线 | 日韩欧美在线不卡 | 精品成人一区 | 国产第99页| 日韩一级大片 | 国产午夜精品久久 | 综合色成人 | 欧美国产视频 | av在线一区二区 | 国产精品成人一区二区三区 | 999在线观看精品免费不卡网站 | 成人性视频免费网站 | 国产一区| 国产精品视频免费观看 | 日韩有码在线播放 | 亚洲国产一区二区三区 | 中文字幕日韩欧美一区二区三区 | 成人视屏在线观看 | 国产91富婆养生按摩会所 | 成人免费视频观看视频 | 亚洲aaa在线观看 | 日韩在线免费观看网站 | 国产精品毛片久久久久久久 | 日韩不卡 | 精品久久av | 精品一区二区三区免费看 | 在线观看亚洲一区 | 国产欧美精品一区二区三区四区 | 久久久999成人 | 久久久久国产 | 中文字幕在线观看网站 | 欧美涩涩网站 | 久久久精品综合 | 色爱av| 久久久久久久成人 | 欧美一级黄色片 | 欧洲亚洲精品久久久久 | 久久久综合网 | 视频精品一区二区 | 狠狠伊人 | 激情毛片| 狠狠干天天干 | 一区二区视频在线 | 欧美人妖在线 | 欧美视频在线播放 | 99精品电影| 欧美日韩国产影院 | 精品久久久精品 | 日韩成人av在线 | 五月激情六月婷婷 | 欧美午夜在线 | 久久中文视频 | 日韩欧美国产一区二区三区 | 亚洲第一福利视频 | av网站观看| 免费黄色片一区二区 | 亚洲精品久久久久久国产精华液 | 国产视频久久久 | 精品久久中文字幕 | 日批免费观看视频 | 91.成人天堂一区 | 久久青青 | 欧美久久免费观看 | 精品久久久久久亚洲精品 | 在线观看国产一区 | 一区二区在线免费观看 | 99视频精品 | 免费成人av | 欧美日韩中文字幕在线 | 最新av中文字幕 | 日韩国产欧美在线观看 | 中文字字幕一区二区三区四区五区 | 日韩在线免费视频 | 国产视频一区二区在线 | 成人看的羞羞视频免费观看 | 成人激情视频 | 日本大人吃奶视频xxxx | 欧美国产精品一区 | 特黄一级 | 久久九九 | 精品伊人 | a毛片| 国产精品777 | 国产精品美乳一区二区免费 | 日日骚 | 久久亚洲一区二区 | 欧美在线免费 | 国产xxx护士爽免费看 | 91精品国产乱码久久久久久 | 亚洲视频中文字幕 | 91在线免费观看 | 在线涩涩| 超碰在线播| 久久久久久99 | 日韩一区二区三区在线 | 一区二区色 | 亚洲美女精品视频 | 黄色毛片免费看 | 午夜精品一区二区三区在线视频 | 国产区免费观看 | 91 在线观看 | 99精品99| 91精品国产91综合久久蜜臀 | 久久女人网 | 欧美日韩免费在线 | www.888www看片| 天天干天天干天天干天天射 | 污视频在线免费观看 | 在线观看国产视频 | 天天夜夜操 | 日日干夜夜操 | 一二三四在线视频观看社区 | 国内精品99 | 天天干com | 欧美黑人巨大xxx极品 | 免费成人在线观看视频 | 国产精品网站在线观看 | 欧美视频二区 | 成人激情免费视频 | 97视频在线 | 国产亚洲精品久久久久久青梅 | 国产精品久久久久久久久久99 | 99视频在线免费观看 | 国产激情偷乱视频一区二区三区 | 蜜臀网| 国产精品视频免费 | 欧美成人免费一级人片100 | 欧美一级在线观看 | 爱爱日韩 | 成人片免费看 | 色中色综合 | 天堂av中文 | 国产精品成人在线观看 | 91视频精选 | 午夜精品成人一区二区 | 色视频在线播放 | 精品久久久久久亚洲综合网 | 精品99在线 | 成人av教育 | 犬夜叉在线观看 | 欧美成人a | 亚洲国产精品t66y | 97国产精品视频人人做人人爱 | 伊人伊人伊人 | 欧美黄 片免费观看 | 国产999免费视频 | 九九99热 | 在线成人av观看 | 欧美日韩激情 | 欧美高清dvd | 成人三级在线 | 日韩免费片| 亚洲欧美精品 | 一道本视频 | 日本在线观看 | 国产一区在线免费观看 | 黄色免费成人 | 亚洲第一视频 | 久久久www| 亚洲精品乱码久久久久膏 | 欧美一级一区 | 久久久亚洲一区 | 午夜精品久久久久久久久久久久久 | 久久精品国产精品青草 | 国产精品福利网站 | 视频国产一区 | 久久免费小视频 | 99精品视频在线 | 成人欧美一区二区三区在线观看 | 久久久久久极品 | 欧美精品1区| 国产精品亚洲精品日韩已方 | 日本黄色大片免费观看 | 国产精品久久久久久久电影 | 国产精品毛片久久久久久久 | 久久久久久久久综合 | 国产精品一区二区三区在线 | 国产一区二区三区免费在线 | 久久久香蕉 | 在线h观看 | 爱爱视频网站 | 欧美午夜三级视频 | 久久久久女人精品毛片九一韩国 |