精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從零搭建開發腳手架 集成認證授權 Sa-Token(嘗鮮)

開發 后端
目前我僅以學習和嘗鮮為目的來集成,不建議用于公司等正式環境,公司還是建議Shiro和Spring Security那一套。(等我實戰一波看看效果再說)

 [[392885]]

本文轉載自微信公眾號「Java大廠面試官」,作者laker。轉載本文請聯系Java大廠面試官公眾號。

目前我僅以學習和嘗鮮為目的來集成,不建議用于公司等正式環境,公司還是建議Shiro和Spring Security那一套。(等我實戰一波看看效果再說)

為什么要嘗鮮Sa-Token

之前我還是挺排斥國產小作坊的開源作品,畢竟不是根紅苗正,但是隨著近幾年國內開源社區的大力發展,以及在平時工作中又接觸了解很多,慢慢改變了我的看法,其實國人開源作品還是很香的,其Api簡單易用,源碼和官方文檔都是中文的,功能豐富且能滿足很多中國式需求,各種QQ、微信交流群活躍度非常高,總之就是極大程度滿足中國式需求。

在權限認證框架領域,使用最多的莫過于Shiro和Spring Security,但是一天在逛同性交友網站(github)的時候,赫然發現了Sa-Token其竟然有2K的star數量,看其中文介紹竟然是輕量級Java權限認證框架,看了下其特性和功能點,就喚起了我強烈的好奇心,于是乎就有了今天的嘗鮮。

Sa-Token是什么?

sa-token是一個輕量級Java權限認證框架,主要解決:登錄認證、權限認證、Session會話、單點登錄、OAuth2.0 等一系列權限相關問題

框架針對踢人下線、自動續簽、前后臺分離、分布式會話……等常見業務進行N多適配,通過sa-token,你可以以一種極簡的方式實現系統的權限認證部分

與其它權限認證框架相比,sa-token 具有以下優勢:

  • 簡單 :可零配置啟動框架,真正的開箱即用,低成本上手
  • 強大 :目前已集成幾十項權限相關特性,涵蓋了大部分業務場景的解決方案
  • 易用 :如絲般順滑的API調用,大量高級特性統統只需一行代碼即可實現
  • 高擴展 :幾乎所有組件都提供了擴展接口,90%以上的邏輯都可以按需重寫

Sa-Token 能做什么?

  • 登錄驗證 —— 輕松登錄鑒權,并提供五種細分場景值
  • 權限驗證 —— 適配RBAC權限模型,不同角色不同授權
  • Session會話 —— 專業的數據緩存中心
  • 踢人下線 —— 將違規用戶立刻清退下線
  • 持久層擴展 —— 可集成Redis、Memcached等專業緩存中間件,重啟數據不丟失
  • 分布式會話 —— 提供jwt集成和共享數據中心兩種分布式會話方案
  • 單點登錄 —— 一處登錄,處處通行
  • 模擬他人賬號 —— 實時操作任意用戶狀態數據
  • 臨時身份切換 —— 將會話身份臨時切換為其它賬號
  • 無Cookie模式 —— APP、小程序等前后臺分離場景
  • 同端互斥登錄 —— 像QQ一樣手機電腦同時在線,但是兩個手機上互斥登錄
  • 多賬號認證體系 —— 比如一個商城項目的user表和admin表分開鑒權
  • 花式token生成 —— 內置六種token風格,還可自定義token生成策略
  • 注解式鑒權 —— 優雅的將鑒權與業務代碼分離
  • 路由攔截式鑒權 —— 根據路由攔截鑒權,可適配restful模式
  • 自動續簽 —— 提供兩種token過期策略,靈活搭配使用,還可自動續簽
  • 會話治理 —— 提供方便靈活的會話查詢接口
  • 記住我模式 —— 適配[記住我]模式,重啟瀏覽器免驗證
  • 密碼加密 —— 提供密碼加密模塊,可快速MD5、SHA1、SHA256、AES、RSA加密
  • 組件自動注入 —— 零配置與Spring等框架集成

快速集成

依賴導入

  1. <dependency> 
  2.     <groupId>cn.dev33</groupId> 
  3.     <artifactId>sa-token-spring-boot-starter</artifactId> 
  4.     <version>1.15.2</version> 
  5. </dependency> 

“最新版本去maven中央庫自己查詢下,當前是1.15.2。

配置文件

你可以零配置啟動項目但同時你也可以在application.yml中增加如下配置,定制性使用框架:

  1. spring:  
  2.     # sa-token配置 
  3.     sa-token:  
  4.         # token名稱 (同時也是cookie名稱) 
  5.         token-name: satoken 
  6.         # token有效期,單位s 默認30天, -1代表永不過期  
  7.         timeout: 2592000 
  8.         # token臨時有效期 (指定時間內無操作就視為token過期) 單位: 秒 
  9.         activity-timeout: -1 
  10.         # 是否允許同一賬號并發登錄 (為true時允許一起登錄, 為false時新登錄擠掉舊登錄)  
  11.         allow-concurrent-login: true 
  12.         # 在多人登錄同一賬號時,是否共用一個token (為true時所有登錄共用一個token, 為false時每次登錄新建一個token)  
  13.         is-share: false 
  14.         # token風格 
  15.         token-style: uuid 

登錄

  1. @PostMapping("/api/v1/login"
  2.     @ApiOperationSupport(order = 1) 
  3.     @ApiOperation(value = "登錄"
  4.     public Response login(String userName, String pwd) { 
  5.         log.info("login,username:{},pwd:{}", userName, pwd); 
  6.         // 模擬 校驗用戶名密碼  
  7.         Long userId = check(userName,pwd); 
  8.         StpUtil.setLoginId(userId); 
  9.         return Response.ok(StpUtil.getTokenInfo()); 
  10.     } 

核心就一行StpUtil.setLoginId(userId),來看看它幫我們做了什么?

源碼及其簡單,還有很多中文注釋,跟著讀就行了,直接貼結論。

  • 創建token
  • 創建SaSession
  • 在session上記錄token簽名
  • 創建token、loginId映射
  • token寫入cookie

底層會話等存儲使用的是Map

源碼如下:

  1. /** 
  2.  * 數據集合  
  3.  */ 
  4. public Map<String, Object> dataMap = new ConcurrentHashMap<String, Object>(); 
  5.  
  6. /** 
  7.  * 過期時間集合 (單位: 毫秒) , 記錄所有key的到期時間 [注意不是剩余存活時間]  
  8.  */ 
  9. public Map<String, Long> expireMap = new ConcurrentHashMap<String, Long>(); 

調用結果如下:

  • Response Heards
  1. Connection: keep-alive 
  2. Content-Type: application/json 
  3. Date: Fri, 09 Apr 2021 07:33:59 GMT 
  4. Keep-Alive: timeout=60 
  5. // 重點 
  6. Set-Cookie: LakerToken=da14afd3f4b648a889a1e51ac3ec53d7; Max-Age=1800; Expires=Fri, 09-Apr-2021 08:03:59 GMT; Path=/ 
  7. Transfer-Encoding: chunked 
  • Response Body
  1.  "code": 200, 
  2.  "msg"""
  3.  "data": { 
  4.   "tokenName""LakerToken"
  5.   "tokenValue""da14afd3f4b648a889a1e51ac3ec53d7"
  6.   "isLogin"true
  7.   "loginId""1"
  8.   "loginKey""login"
  9.   "tokenTimeout": 1784, 
  10.   "sessionTimeout": 1784, 
  11.   "tokenSessionTimeout": -2, 
  12.   "tokenActivityTimeout": 30, 
  13.   "loginDevice""default-device" 
  14.  } 

可以看到返回heards中已自動設置:Set-Cookie: LakerToken=da14afd3f4b648a889a1e51ac3ec53d7; Max-Age=1800; Expires=Fri, 09-Apr-2021 08:03:59 GMT; Path=/

登出

  1. @PostMapping("/api/v1/loginOut"
  2.  @ApiOperationSupport(order = 3) 
  3.  @ApiOperation(value = "登出"
  4.  @SaCheckLogin 
  5.  public Response loginOut() { 
  6.      StpUtil.logout(); 
  7.      return Response.ok(); 
  8.  } 

核心也是一行StpUtil.logout(),來看看它幫我們做了什么?

  • 獲取HttpRequest
  • 嘗試從request里讀取token
  • 嘗試從請求體里面讀取token
  • 嘗試從header里讀取token
  • 嘗試從cookie里讀取token
  • 刪除cookie
  • 刪除token、loginId映射
  • 注銷session

請求攔截鑒權

第一步:配置全局攔截器

  1. @Configuration 
  2. public class MySaTokenConfig implements WebMvcConfigurer { 
  3.  /** 
  4.   * 注冊sa-token的攔截器,打開注解式鑒權功能 (如果您不需要此功能,可以刪除此類)  
  5.   */ 
  6.     @Override 
  7.     public void addInterceptors(InterceptorRegistry registry) { 
  8.         registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");  
  9.     } 

第二步:在需要攔截的類或者方法上加注解

  • @SaCheckLogin: 標注在方法或類上,當前會話必須處于登錄狀態才可通過校驗
  • @SaCheckRole("admin"): 標注在方法或類上,當前會話必須具有指定角色標識才能通過校驗
  • @SaCheckPermission("user:add"): 標注在方法或類上,當前會話必須具有指定權限才能通過校驗

例如:

  1. @GetMapping("/api/v1/tokenInfo"
  2.    @ApiOperationSupport(order = 2) 
  3.    @ApiOperation(value = "獲取當前會話的token信息"
  4.    @SaCheckLogin 
  5.    public Response tokenInfo() { 
  6.        return Response.ok(StpUtil.getTokenInfo()); 
  7.    } 

加上@SaCheckLogin則該接口必須處于登錄狀態才可通過校驗。

這里核心攔截校驗又是如何工作的呢?可以看下SaAnnotationInterceptor.java源碼,基于SpringMvc的攔截器實現的攔截校驗。

實現功能如下:

  • 驗證登錄
  • 驗證角色
  • 驗證權限

實現流程原理如下:

  • 獲取HttpRequest中的token
    • 嘗試從request里讀取token
    • 嘗試從請求體里面讀取token
    • 嘗試從header里讀取token
    • 嘗試從cookie里讀取token
  • 判斷token
    • 無效token
    • 過期
    • 被頂下線
    • 被踢下線
  • 自動續期

權限和角色擴展

直接實現StpInterface接口,覆寫getPermissionList和getRoleList方法即可。

  1. @Component 
  2. public class StpInterfaceImpl implements StpInterface { 
  3.     /** 
  4.      * 返回一個賬號所擁有的權限碼集合 
  5.      */ 
  6.     @Override 
  7.     public List<String> getPermissionList(Object loginId, String loginKey) { 
  8.        xxx 
  9.     } 
  10.     /** 
  11.      * 返回一個賬號所擁有的角色標識集合 
  12.      */ 
  13.     @Override 
  14.     public List<String> getRoleList(Object loginId, String loginKey) { 
  15.         xxx 
  16.     } 

集群環境

Sa-token默認將會話數據保存在內存中,此模式讀寫速度最快,且避免了序列化與反序列化帶來的性能消耗,但是此模式也有一些缺點,比如:重啟后數據會丟失,無法在集群模式下共享數據。

為此,sa-token將數據持久操作全部抽象到 SaTokenDao 接口中,此設計可以保證開發者對框架進行靈活擴展,比如我們可以將會話數據存儲在 Redis、Memcached等專業的緩存中間件中,做到重啟數據不丟失,而且保證分布式環境下多節點的會話一致性。

除了框架內部對SaTokenDao提供的基于內存的默認實現,我們使用官網提供的Redis擴展。

依賴導入

  1. <!-- sa-token整合redis (使用jackson序列化方式) --> 
  2. <dependency> 
  3.     <groupId>cn.dev33</groupId> 
  4.     <artifactId>sa-token-dao-redis-jackson</artifactId> 
  5.     <version>1.15.2</version> 
  6. </dependency> 
  7. <!-- 提供redis連接池 --> 
  8. <dependency> 
  9.     <groupId>org.apache.commons</groupId> 
  10.     <artifactId>commons-pool2</artifactId> 
  11. </dependency> 

“使用Jackson序列化方式,Session序列化后可讀性強,可靈活手動修改

配置文件

  1. spring:  
  2.     # redis配置  
  3.     redis: 
  4.         # Redis數據庫索引(默認為0) 
  5.         database: 0 
  6.         # Redis服務器地址 
  7.         host: 127.0.0.1 
  8.         # Redis服務器連接端口 
  9.         port: 6379 
  10.         # Redis服務器連接密碼(默認為空) 
  11.         # password:  
  12.         # 連接超時時間(毫秒) 
  13.         timeout: 1000ms 
  14.         lettuce: 
  15.             pool: 
  16.                 # 連接池最大連接數 
  17.                 max-active: 200 
  18.                 # 連接池最大阻塞等待時間(使用負值表示沒有限制) 
  19.                 max-wait: -1ms 
  20.                 # 連接池中的最大空閑連接 
  21.                 max-idle: 10 
  22.                 # 連接池中的最小空閑連接 
  23.                 min-idle: 0 

引入依賴和配置后,框架會自動使用Redis存儲。

總結

初步嘗試還挺不錯的,文檔和代碼示例都很全,基本功能都能滿足,源碼簡單易懂,可以隨意二開,封裝度非常高,不理解原理的就很容易變成工具人了,其他的等用一段時間再評論。

參考:

http://sa-token.dev33.cn/

https://github.com/dromara/sa-token

 

責任編輯:武曉燕 來源: Java大廠面試官
相關推薦

2021-09-01 10:07:43

開發零搭建Groovy

2021-04-28 16:10:48

開發腳手架 Spring

2021-03-09 17:11:09

數據庫腳手架開發

2021-07-13 18:42:38

Spring Boot腳手架開發

2021-05-13 17:02:38

MDC腳手架日志

2020-08-19 08:55:47

Redis緩存數據庫

2021-04-20 19:24:16

腳手架 Java微信

2021-06-02 17:58:49

腳手架 冪等性前端

2021-02-19 22:43:50

開發腳手架Controller

2021-07-29 18:49:49

Spring開發腳手架

2023-11-28 17:24:45

2022-02-18 08:34:33

JavaSa-Token項目

2025-07-28 00:00:55

2021-03-11 14:16:47

Spring Boo開發腳手架

2016-08-10 14:59:41

前端Javascript工具

2022-04-24 11:33:47

代碼管理工程

2023-11-21 17:36:04

OpenFeignSentinel

2014-08-15 09:36:06

2021-01-07 05:34:07

腳手架JDK緩存

2025-10-09 00:00:15

點贊
收藏

51CTO技術棧公眾號

日本少妇全体裸体洗澡| 日本成人在线免费观看| 91福利在线视频| 激情欧美一区二区| 97香蕉久久超级碰碰高清版 | 欧美日韩综合在线观看| 精品在线观看入口| 日韩欧美123| 激情婷婷综合网| 欧美人与性动交α欧美精品图片| 久久蜜桃av一区二区天堂| 国产日韩欧美中文在线播放| 国产精品第9页| 外国成人免费视频| 国产手机视频精品| 欧美性猛交乱大交| 日韩在线免费| 亚洲va中文字幕| 一区二区视频在线播放| 天天干在线观看| 国产在线视频精品一区| 日韩av不卡电影| 日韩激情在线播放| 亚洲视频电影在线| 在线观看国产精品91| av网页在线观看| 国产一区二区在线观| 日本精品一区二区三区高清| 精品无码国产一区二区三区av| 77777影视视频在线观看| 不卡的av中国片| 亚洲一区二区三| 中国精品一区二区| 久久九九精品| 17婷婷久久www| 久久精品www| 综合天天久久| 久久久国产精彩视频美女艺术照福利| 久久精品国产亚洲av久| 欧美爱爱网站| 精品久久久久久久久久久久久久久久久 | 亚洲综合网在线| 成人亚洲一区| 国产午夜精品美女视频明星a级| 一级欧美一级日韩片| 91麻豆精品激情在线观看最新| 欧美剧情片在线观看| 亚洲激情在线观看视频| 深夜成人福利| 欧美性色xo影院| 黄www在线观看| 综合日韩av| 日韩欧亚中文在线| www.亚洲天堂网| 欧美人体一区二区三区| 日韩欧美中文免费| 日韩黄色片视频| 久久精品女人天堂av免费观看| 欧美性猛交xxxx富婆| 精品视频无码一区二区三区| 亚洲wwww| 欧美揉bbbbb揉bbbbb| 欧美日韩一区二区三区69堂| 四虎国产精品成人免费影视| 日韩一区二区在线免费观看| 日本亚洲一区二区三区| 51精品国产| 亚洲精品久久视频| 美女洗澡无遮挡| 日韩精品久久| 欧美成人免费观看| www.99re7.com| 免费看的黄色欧美网站| 国产精品国产亚洲伊人久久| 在线观看av大片| 国产一区二区在线免费观看| 99三级在线| 香蕉国产在线视频| 欧美国产亚洲另类动漫| 中文字幕中文字幕99| free性欧美hd另类精品| 亚洲午夜激情网站| 人妻熟女一二三区夜夜爱| av在线日韩| 日韩欧美综合在线| 欧美一区二区三区成人精品| 日韩在线观看电影完整版高清免费悬疑悬疑| 色黄久久久久久| 豆国产97在线 | 亚洲| 蜜桃久久av| 91精品视频观看| 午夜性色福利影院| 亚洲欧美综合网| 国产一区二区视频播放| 久久久免费人体| 精品国产免费人成电影在线观看四季 | 五十路熟女丰满大屁股| 九九热这里有精品| 亚洲成人av在线| 亚洲第一视频区| 在线看片成人| 成人福利在线观看| 亚洲色图狠狠干| 亚洲视频中文字幕| 无码人妻h动漫| 91蝌蚪精品视频| 日韩一区二区久久久| 黑人一级大毛片| 国产在线一区二区综合免费视频| 久久一区免费| 欧美男男video| 欧美色网一区二区| 国产精品无码网站| 中文字幕乱码亚洲无线精品一区| 国产suv精品一区二区| 亚洲高清视频在线播放| 国产精品麻豆网站| 99久久久无码国产精品6| 18国产精品| 久久影视电视剧免费网站清宫辞电视| 免费黄色网址在线| 成人性生交大合| 美女黄色片网站| 国产亚洲精彩久久| 日韩精品亚洲元码| 激情四射综合网| 精品一区二区在线看| 日本不卡一区| a一区二区三区| 日韩成人在线视频网站| 国产在线一二区| 国产乱码精品一品二品| 中文字幕人成一区| 国产亚洲精彩久久| 色播久久人人爽人人爽人人片视av| 国产一级免费视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日韩高清第一页| 欧美手机在线| 国产精品美女久久| 99青草视频在线播放视| 色av成人天堂桃色av| 91精品人妻一区二区| 亚洲日本黄色| 极品校花啪啪激情久久| free性欧美16hd| 日韩av在线高清| 欧美一级特黄视频| 久久欧美中文字幕| 国产偷人视频免费| 欧美限制电影| 国产日韩在线观看av| 免费黄色网址在线观看| 91精品国产综合久久精品图片| 亚洲区一区二区三| 国产一区二区三区香蕉| 男女啪啪免费观看| 国产成人在线中文字幕| 午夜精品福利电影| 三级av在线| 欧美性做爰猛烈叫床潮| 三年中国中文观看免费播放| 免费在线观看精品| 久久av喷吹av高潮av| 亚洲精品v亚洲精品v日韩精品| 欧美激情精品久久久久久久变态| 欧美熟妇交换久久久久久分类| 亚洲成人av福利| 中文字幕一区二区三区人妻| 日本在线不卡视频一二三区| 手机福利在线视频| 亚洲免费一区三区| 欧美孕妇性xx| 中文字幕日本在线| 欧美xingq一区二区| 免费观看成人毛片| 国产精品久久久久影院老司| 美女日批在线观看| 久久国产99| 欧美aaa在线观看| 精品欧美午夜寂寞影院| 国产精品ⅴa在线观看h| 国产黄色在线免费观看| 亚洲国产精品yw在线观看| 日韩不卡高清视频| 一区二区高清免费观看影视大全| 亚洲国产精品无码久久久久高潮| 日本视频中文字幕一区二区三区| 日韩精品第1页| 五月激激激综合网色播| 国产一区红桃视频| 天堂av中文在线观看| 精品国产拍在线观看| 污视频在线免费观看| 欧美挠脚心视频网站| 精品少妇久久久| 国产精品美女www爽爽爽| 伊人久久一区二区三区| 美女网站一区二区| 欧美视频在线播放一区| 亚洲乱码电影| 欧美一进一出视频| 国产精品毛片av| 国产欧美久久一区二区| 日韩在线伦理| 美女扒开尿口让男人操亚洲视频网站| 色网站在线免费观看| 日韩欧美另类在线| 在线观看毛片视频| 色综合天天综合网天天看片| 清纯粉嫩极品夜夜嗨av| 国产精品美女久久久久久久| 一级性生活毛片| 成人黄色在线视频| 不用播放器的免费av| 久久久国产亚洲精品| cao在线观看| 欧美精品国产| 色中文字幕在线观看| 国内黄色精品| 蜜桃精品久久久久久久免费影院 | 亚洲国产aⅴ精品一区二区三区| 91精品国产精品| 日本大片在线播放| 欧美成人h版在线观看| 欧洲美女少妇精品| 中文日韩在线观看| 国产福利在线视频| 亚洲人成电影网站色www| 欧洲成人一区二区三区| 日韩欧美亚洲国产另类| 国产农村老头老太视频| 欧美乱妇一区二区三区不卡视频| 色老头在线视频| 色94色欧美sute亚洲13| 亚洲第一网站在线观看| 欧美性猛交99久久久久99按摩| 五月天综合激情| 欧美午夜美女看片| 国产一级片毛片| 一本一本大道香蕉久在线精品 | 蜜臀久久99精品久久久久久9| 丁香啪啪综合成人亚洲| 久久精品道一区二区三区| 国产成人无码一二三区视频| 亚洲专区一区| 爱情岛论坛成人| 蜜桃av一区二区在线观看| 视色视频在线观看| 久久99国产精品免费网站| 91日韩视频在线观看| 老鸭窝一区二区久久精品| 欧美大片久久久| 国产二区国产一区在线观看| 蜜臀aⅴ国产精品久久久国产老师| 国产69精品一区二区亚洲孕妇| 无码人妻精品一区二区三区99不卡| 粉嫩13p一区二区三区| 岛国精品资源网站| 国产欧美日韩三级| fc2ppv在线播放| 亚洲高清免费一级二级三级| 日韩欧美三级在线观看| 色婷婷久久久亚洲一区二区三区 | 在线亚洲国产精品网| 精品一区二区视频在线观看| 国产精品一区二区在线观看网站| 久久久久久久久久影视| 99久精品国产| 日韩黄色中文字幕| 亚洲精品亚洲人成人网| 国产精品不卡av| 日本韩国精品在线| 国产熟女精品视频| 日韩av最新在线| 自拍视频在线网| 欧美极品少妇全裸体| 手机在线观看av| 成人久久久久久久| 老司机aⅴ在线精品导航| 色99中文字幕| 国产伊人精品| 亚洲不卡视频在线| 国产成人av一区| 日本性高潮视频| 一区二区三区蜜桃网| 精品国产xxx| 欧美一级一级性生活免费录像| 视频一区 中文字幕| 视频一区视频二区国产精品| av成人福利| 国产中文字幕91| 妖精视频一区二区三区| 久久av喷吹av高潮av| 日韩精品每日更新| 在线播放av网址| 国产精品久久久久久久裸模| 黄色片视频网站| 欧美一区二区三区日韩| 国内精品一区视频| 久久久久久久香蕉网| 久久爱.com| 欧美精品久久| 精品福利电影| 亚洲一区二区图片| 国产精品你懂的在线| aaa人片在线| 精品捆绑美女sm三区| 免费大片黄在线观看视频网站| 欧美中文字幕视频在线观看| 51亚洲精品| 女女同性女同一区二区三区按摩| 日欧美一区二区| 六十路息与子猛烈交尾| 一区二区三区在线视频免费| 中文字幕欧美人妻精品| 亚洲欧美激情四射在线日| 激情网站在线| 91成人在线看| 亚洲一区 二区 三区| 99re精彩视频| 国产精品少妇自拍| 无码人妻丰满熟妇精品区| 亚洲加勒比久久88色综合| av网站大全在线| 成人亚洲激情网| 色小子综合网| 一路向西2在线观看| 中文成人综合网| 日本欧美www| 国产午夜精品一区二区三区| av资源亚洲| 日韩av电影免费在线| 国产精品入口| 精品夜夜澡人妻无码av| 午夜电影一区二区三区| 黑人精品一区二区| 久久人人爽人人爽人人片av高请| 丁香5月婷婷久久| 成人在线播放网址| 成人白浆超碰人人人人| 日本少妇性高潮| 日韩成人久久久| 欧美xx视频| 日本黄网免费一区二区精品| 老牛国产精品一区的观看方式| 亚欧洲乱码视频| 欧美性猛交xxxx黑人交| av国产在线观看| 91精品视频在线免费观看| 综合av在线| 日韩www视频| 色猫猫国产区一区二在线视频| 成人18在线| 91九色蝌蚪国产| 欧美精品一卡| 亚洲欧美在线不卡| 色美美综合视频| 麻豆网在线观看| 99国产超薄肉色丝袜交足的后果| 亚洲一级影院| 国产精品高清无码在线观看| 欧美日韩国产一级| 综合久久2019| 精品国产中文字幕| 日韩成人午夜精品| 久久高清内射无套| 亚洲高清一区二| 色成人免费网站| 日韩中文在线字幕| 99这里只有精品| 在线观看毛片av| 久久久久久久久久亚洲| 一区二区美女| 日本一二三区在线| 午夜激情一区二区三区| 高清av在线| 成人资源视频网站免费| 久久精品30| 国模无码国产精品视频| 精品调教chinesegay| 久久婷婷五月综合色丁香| 成年人网站国产| 国产日韩欧美高清在线| www.超碰在线.com| 国产福利视频一区| 国内精品久久久久久久影视蜜臀| 中国黄色a级片| 欧美一级日韩一级| 亚洲一二三四视频| 中文字幕制服丝袜成人av| 刘亦菲毛片一区二区三区| 国产v综合v亚洲欧美久久| 亚洲欧洲日韩| 亚洲国产av一区| 欧美zozo另类异族| 国产精品传媒麻豆hd| 人人妻人人添人人爽欧美一区| 国产精品日韩精品欧美在线| 亚洲av毛片成人精品|