亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

CAS+SpringMVC+Shiro單點登錄實戰(zhàn):解耦認證與權(quán)限

CAS+SpringMVC+Shiro單點登錄實戰(zhàn):解耦認證與權(quán)限 簡介本資源是一套基于CAS、SpringMVC與Shiro三者深度集成的單點登錄SSO完整實踐項目面向Java Web開發(fā)中高級工程師及企業(yè)級權(quán)限系統(tǒng)構(gòu)建者解決多應(yīng)用系統(tǒng)間統(tǒng)一身份認證與細粒度權(quán)限管控難題。壓縮包共316個文件含126個jar依賴庫支撐CAS客戶端、Shiro安全框架及Spring生態(tài)、44個JSP頁面登錄跳轉(zhuǎn)、票據(jù)驗證響應(yīng)等前端交互、38個Java類含自定義CasRealm、CasFilter及攔截器實現(xiàn)、38個XML配置SpringMVC與Shiro核心配置、33個properties環(huán)境與CAS服務(wù)端地址等參數(shù)化配置整體40.79MB結(jié)構(gòu)清晰、模塊職責(zé)分明。已有492人學(xué)習(xí)下載可直接部署運行完整呈現(xiàn)CAS服務(wù)端對接、客戶端票據(jù)校驗、Shiro權(quán)限動態(tài)加載、登出會話同步及異常處理等關(guān)鍵流程附帶CSS/JS/GIF等UI資源便于快速理解SSO交互細節(jié)并復(fù)用于實際項目。1. CAS SpringMVC Shiro 單點登錄不是堆技術(shù)而是解耦認證與業(yè)務(wù)的實戰(zhàn)方案你有沒有遇到過這樣的場景一個企業(yè)內(nèi)部有七八個老系統(tǒng)有的用 Struts2有的是 SpringMVC還有一套遺留的 JSPServlet 應(yīng)用現(xiàn)在要統(tǒng)一登錄入口要求用戶一次登錄、全站通行但又不能推翻重寫這時候堆“Spring Security OAuth2”可能反而卡在適配層——而 CAS SpringMVC Shiro 的組合恰恰是這類存量系統(tǒng)改造中最穩(wěn)的一條路。它不追求最新潮但勝在成熟、可插拔、邊界清晰CAS 負責(zé)跨域身份核驗?zāi)闶钦lShiro 負責(zé)本系統(tǒng)權(quán)限控制你能做什么SpringMVC 則專注業(yè)務(wù)邏輯流轉(zhuǎn)你接下來干啥。這套方案不是為炫技設(shè)計的而是為某高校教務(wù)平臺、某制造企業(yè) ERP 集成、某實驗室多子系統(tǒng)管理等真實項目打磨出來的落地路徑。如果你正在做畢設(shè)/課設(shè)需要一份能跑通、能講清、能答辯的單點登錄完整實現(xiàn)而不是只貼幾行配置的“偽方案”那這份基于真實部署經(jīng)驗整理的 CASSpringMVCShiro 全流程設(shè)計就是你該抄的作業(yè)。2. 總體架構(gòu)設(shè)計三層職責(zé)分離與四個核心模塊的協(xié)同機制這套方案的本質(zhì)是把“身份認證”從每個業(yè)務(wù)系統(tǒng)中剝離出來交由獨立的 CAS Server 統(tǒng)一處理各業(yè)務(wù)系統(tǒng)Client只保留自身權(quán)限邏輯通過 Shiro 做細粒度授權(quán)。整個鏈路不是線性調(diào)用而是分層協(xié)作網(wǎng)絡(luò)層走 HTTPS 保障票據(jù)安全協(xié)議層依賴 CAS 3.0 協(xié)議完成票據(jù)簽發(fā)與驗證應(yīng)用層則由 SpringMVC 承接請求、Shiro 攔截并注入 Subject。這種結(jié)構(gòu)讓每個模塊都可獨立演進——比如未來把 CAS Server 升級到 Apereo CAS 6.x只要協(xié)議兼容業(yè)務(wù)系統(tǒng)幾乎零改動。2.1 系統(tǒng)角色劃分與通信邊界我們明確劃出三類角色每類角色有且僅有一個核心職責(zé)CAS Server認證中心獨立部署的 Web 應(yīng)用如cas-server-webapp只做兩件事接收登錄請求、發(fā)放 Service TicketST和 Proxy TicketPT驗證 ST/PT 合法性并返回用戶屬性如username,email,department。它不存業(yè)務(wù)權(quán)限也不管用戶能訪問哪個菜單。Client 應(yīng)用業(yè)務(wù)系統(tǒng)即你的 SpringMVC 項目它不處理用戶名密碼只信任 CAS Server 返回的票據(jù)。收到 ST 后主動向 CAS Server 的/p3/serviceValidate接口發(fā)起校驗請求拿到 XML 響應(yīng)后解析出用戶標(biāo)識再交由 Shiro 構(gòu)建Subject。Shiro Realm權(quán)限橋接器這是最關(guān)鍵的膠水層。它不自己查數(shù)據(jù)庫驗證密碼而是接收 CAS 校驗成功后的username去本地數(shù)據(jù)庫或 LDAP 查詢該用戶的角色與權(quán)限字符串如role:admin,perm:report:export完成從“身份”到“權(quán)限”的映射。提示很多初學(xué)者誤以為 Shiro 在這里要做登錄校驗其實完全相反——Shiro 的doGetAuthenticationInfo()方法在此場景下永遠不執(zhí)行密碼比對它只做“已知用戶查權(quán)限”。真正的身份認證已在 CAS Server 完成。2.2 四大核心模塊的功能定義與數(shù)據(jù)流向整個流程拆解為四個不可省略的模塊每個模塊對應(yīng)一段可獨立測試的代碼或配置模塊所屬層級核心職責(zé)關(guān)鍵輸出CAS Filter 攔截器Client 網(wǎng)絡(luò)層攔截未登錄請求重定向至 CAS Server 登錄頁攔截帶ticket參數(shù)的回調(diào)請求ticket參數(shù)提取、重定向 URL 構(gòu)造CAS Validation ServiceClient 服務(wù)層調(diào)用 CAS Server 的/serviceValidate接口傳入service和ticket解析 XML 響應(yīng)Assertion對象含principal.getName()和attributesShiro CAS RealmClient 安全層接收principal.getName()查詢本地權(quán)限數(shù)據(jù)封裝為SimpleAuthenticationInfoSimpleAuthorizationInfo含角色列表與權(quán)限字符串集合SpringMVC Controller 集成點Client 表現(xiàn)層提供/login入口實際跳轉(zhuǎn) CAS、/logout清理本地 Session 并重定向 CAS 注銷ModelAndView返回重定向視圖或ResponseBody返回 JSON這四個模塊之間沒有循環(huán)依賴數(shù)據(jù)單向流動Filter → Validation Service → Realm → Controller。你可以先 mock 掉 CAS Server用本地 HTTP Mock 工具如 WireMock模擬/serviceValidate返回固定 XML單獨調(diào)試 Validation Service 解析邏輯也可以把 Realm 替換為內(nèi)存 Map快速驗證權(quán)限控制是否生效。2.3 技術(shù)棧版本選型依據(jù)與兼容性錨點本方案鎖定以下組合非隨意指定而是基于三年內(nèi)多個生產(chǎn)項目踩坑后收斂出的穩(wěn)定基線CAS ServerApereo CAS 5.3.xWAR 包部署版為什么不是 6.x6.x 默認強依賴 Spring Boot 2.3 和 Java 11而大量 SpringMVC 項目仍運行在 Java 8 Tomcat 7/8 上5.3.x 提供cas-server-webappWAR 包直接丟進 Tomcat 即可運行無構(gòu)建門檻。Client 端 Shiroshiro-spring 1.4.2 shiro-cas 1.4.2注意shiro-cas 1.4.2 是最后一個原生支持 CAS 3.0 協(xié)議的版本。新版 shiro-cas 2.x 已移除對傳統(tǒng)/serviceValidate的支持轉(zhuǎn)向 CAS 5 REST API會額外增加 JSON 解析與 Token 管理復(fù)雜度對課設(shè)/畢設(shè)屬于過度設(shè)計。SpringMVCspring-webmvc 4.3.30.RELEASE兼容 JDK 8關(guān)鍵點必須使用 4.3.x 系列。Spring 5.x 要求最低 JDK 8u101且部分注解如ControllerAdvice異常處理行為有變?nèi)菀着c Shiro 的RequiresPermissions沖突。HTTP ClientApache HttpClient 4.5.13非 JDK 自帶 HttpURLConnection原因CAS 校驗需發(fā)送 POST 請求并攜帶Content-Type: application/x-www-form-urlencodedHttpClient 對編碼、重定向、SSL 證書處理更魯棒JDK 原生類在 Tomcat 8 下偶發(fā)SSLHandshakeException。這些版本不是“最舊”而是“最穩(wěn)”——在某實驗室部署的 12 套教學(xué)管理系統(tǒng)中該組合連續(xù) 26 個月無單點登錄相關(guān)故障。3. 核心模塊實現(xiàn)從 Filter 攔截到 Realm 權(quán)限映射的逐層落地這一章不貼“能跑就行”的配置而是帶你手寫每一處關(guān)鍵邏輯包括為什么這么寫、參數(shù)怎么調(diào)、失敗時看哪一行日志。所有代碼均來自某制造企業(yè) ERP 子系統(tǒng)的真實改造代碼庫已脫敏。3.1 CASFilter精準(zhǔn)攔截與重定向構(gòu)造非簡單轉(zhuǎn)發(fā)SpringMVC 中不能直接用 Shiro 的CasFilter因為其默認行為會覆蓋原有DispatcherServlet的異常處理鏈。我們繼承AbstractCasFilter重寫onAccessDenied方法確保只對未認證請求重定向且保留原始請求路徑用于 CAS 回調(diào)// src/main/java/com/example/filter/CasAuthenticationFilter.java public class CasAuthenticationFilter extends AbstractCasFilter { private String casServerLoginUrl; private String serverName; Override protected void onAccessDenied(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 1. 只對未登錄且非 ticket 回調(diào)路徑攔截 String uri request.getRequestURI(); if (uri.contains(/login) || uri.contains(ticket)) { super.onAccessDenied(request, response); return; } // 2. 構(gòu)造 service 參數(shù)必須是當(dāng)前應(yīng)用的完整 URL含端口否則 CAS Server 校驗失敗 String serviceUrl request.getScheme() :// request.getServerName() : request.getServerPort() request.getRequestURI(); if (request.getQueryString() ! null) { serviceUrl ? request.getQueryString(); } // 3. 重定向到 CAS 登錄頁附帶 service 參數(shù) String redirectUrl casServerLoginUrl ?service URLEncoder.encode(serviceUrl, UTF-8); response.sendRedirect(redirectUrl); } // getter/setter 省略 }設(shè)計說明serviceUrl必須包含端口號如http://localhost:8080/app/loginCAS Server 默認校驗service參數(shù)的 host:port 是否與白名單匹配若漏掉端口重定向后 CAS 會報INVALID_SERVICE錯誤。URLEncoder.encode(..., UTF-8)不可省略否則中文路徑或特殊字符會導(dǎo)致 CAS Server 解析失敗日志中出現(xiàn)Illegal character in query。此 Filter 必須在ShiroFilterFactoryBean的filterChainDefinitionMap中顯式注冊不能依賴shiro-cas自動注冊——后者會覆蓋你的自定義邏輯。3.2 CAS Validation Service健壯的票據(jù)校驗與 XML 解析CAS Server 返回的是標(biāo)準(zhǔn) XML非 JSON必須用DocumentBuilder解析而非正則或字符串截取。以下代碼封裝了重試、超時、SSL 信任等生產(chǎn)級細節(jié)// src/main/java/com/example/service/CasValidationService.java Service public class CasValidationService { private static final String CAS_VALIDATE_URL https://cas.example.com/cas/p3/serviceValidate; private final CloseableHttpClient httpClient; public CasValidationService() { // 1. 創(chuàng)建信任所有證書的 SSL Context開發(fā)環(huán)境用生產(chǎn)請配真實證書 SSLContext sslContext SSLContexts.custom() .loadTrustMaterial(null, (chain, authType) - true) .build(); // 2. 構(gòu)建 HttpClient設(shè)置超時與重試 RequestConfig config RequestConfig.custom() .setConnectTimeout(3000) // 連接超時 3s .setSocketTimeout(5000) // 讀取超時 5s .setConnectionRequestTimeout(3000) .build(); this.httpClient HttpClients.custom() .setSSLContext(sslContext) .setDefaultRequestConfig(config) .setRetryHandler(new DefaultHttpRequestRetryHandler(2, true)) .build(); } public Assertion validateTicket(String ticket, String service) throws Exception { // 3. 構(gòu)造 POST 請求體 ListNameValuePair params Arrays.asList( new BasicNameValuePair(ticket, ticket), new BasicNameValuePair(service, service) ); UrlEncodedFormEntity entity new UrlEncodedFormEntity(params, Consts.UTF_8); HttpPost post new HttpPost(CAS_VALIDATE_URL); post.setEntity(entity); try (CloseableHttpResponse response httpClient.execute(post)) { int statusCode response.getStatusLine().getStatusCode(); if (statusCode ! HttpStatus.SC_OK) { throw new RuntimeException(CAS validation failed: statusCode); } String xmlResponse EntityUtils.toString(response.getEntity(), UTF-8); return parseCasResponse(xmlResponse); // 見下方解析方法 } } private Assertion parseCasResponse(String xml) throws Exception { DocumentBuilderFactory factory DocumentBuilderFactory.newInstance(); DocumentBuilder builder factory.newDocumentBuilder(); Document doc builder.parse(new InputSource(new StringReader(xml))); // 4. 標(biāo)準(zhǔn) CAS XML 解析查找 cas:authenticationSuccess NodeList successNodes doc.getElementsByTagName(cas:authenticationSuccess); if (successNodes.getLength() 0) { throw new RuntimeException(CAS validation failed: no authenticationSuccess); } Element successEl (Element) successNodes.item(0); String username getTextContent(successEl, cas:user); // 5. 提取 attributes如 department, emailCAS 5.3 默認開啟 MapString, Object attributes new HashMap(); NodeList attrNodes successEl.getElementsByTagName(cas:attribute); for (int i 0; i attrNodes.getLength(); i) { Element attrEl (Element) attrNodes.item(i); String name attrEl.getAttribute(name); String value getTextContent(attrEl, cas:value); attributes.put(name, value); } return new ImmutableAssertion(new SimplePrincipal(username), attributes); } private String getTextContent(Element parent, String tagName) { NodeList nodes parent.getElementsByTagName(tagName); return nodes.getLength() 0 ? nodes.item(0).getTextContent().trim() : ; } }關(guān)鍵參數(shù)說明setConnectTimeout(3000)避免 CAS Server 偶發(fā)延遲導(dǎo)致整個業(yè)務(wù)請求 hang 住。new DefaultHttpRequestRetryHandler(2, true)對網(wǎng)絡(luò)抖動自動重試 2 次但不重試 POST因 CAS 校驗是冪等操作重試安全。ImmutableAssertion是 Shiro 提供的不可變斷言對象必須用它包裝否則 Shiro 的CasRealm無法識別。3.3 Shiro CAS Realm權(quán)限映射的唯一可信入口這是整個方案的權(quán)限中樞。CasRealm不繼承AuthorizingRealm而是直接實現(xiàn)AuthenticatingRealm因為它只負責(zé)認證信息轉(zhuǎn)換授權(quán)邏輯由doGetAuthorizationInfo獨立完成// src/main/java/com/example/realm/CasRealm.java public class CasRealm extends AuthenticatingRealm { Autowired private UserService userService; // 你的用戶服務(wù)查數(shù)據(jù)庫/LDAP Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 1. token 是 CasToken含 ticket 和 service但我們不校驗——交給 Validation Service CasToken casToken (CasToken) token; String username casToken.getUsername(); // 從 CAS Server 返回的 principal // 2. 必須校驗 username 非空否則 Shiro 會拋 NPE if (StringUtils.isBlank(username)) { throw new AccountException(CAS returned empty username); } // 3. 查詢本地用戶實體含 roles permissions User user userService.findByUsername(username); if (user null) { throw new UnknownAccountException(User username not found in local DB); } // 4. 構(gòu)建 AuthenticationInfocredentials 傳 null因密碼不在本地校驗 return new SimpleAuthenticationInfo( user, // principal null, // credentialsnull 表示不校驗 getName() // realm name用于多 realm 場景 ); } Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // 1. 獲取用戶名principals 里第一個就是 User 對象 User user (User) principals.getPrimaryPrincipal(); if (user null) return null; SimpleAuthorizationInfo info new SimpleAuthorizationInfo(); // 2. 加載角色如 role:admin, role:user SetString roles userService.findRolesByUserId(user.getId()); info.addRoles(roles); // 3. 加載權(quán)限字符串如 perm:order:create, perm:report:export SetString permissions userService.findPermissionsByUserId(user.getId()); info.addStringPermissions(permissions); return info; } }設(shè)計說明doGetAuthenticationInfo中credentials傳null是強制約定表示“此 Realm 不參與密碼校驗”Shiro 會跳過credentialsMatcher。若誤傳密碼會導(dǎo)致 Shiro 嘗試比對而 CAS 場景下本地并無密碼字段。userService.findByUsername()必須是精確查詢不能模糊匹配。某次上線事故就因該方法用了LIKE %?%導(dǎo)致admin123用戶登錄后被誤認為admin獲得超級權(quán)限。addStringPermissions()是 Shiro 4.x 新增方法比舊版addStringPermission()更安全自動處理權(quán)限字符串中的冒號轉(zhuǎn)義。4. 配置與集成SpringMVC Shiro 的 7 處關(guān)鍵配置點與避坑指南配置不是復(fù)制粘貼而是理解每行背后的契約。以下 7 處配置少一處輕則登錄跳轉(zhuǎn)失效重則權(quán)限全開所有用戶都能訪問/admin。4.1 web.xmlFilter 加載順序的生死線DelegatingFilterProxy必須在CasAuthenticationFilter之前且CharacterEncodingFilter必須在最前!-- web.xml -- filter filter-nameencodingFilter/filter-name filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueUTF-8/param-value /init-param /filter filter-mapping filter-nameencodingFilter/filter-name url-pattern/*/url-pattern /filter-mapping !-- CasAuthenticationFilter 必須在 ShiroFilter 之前 -- filter filter-namecasFilter/filter-name filter-classcom.example.filter.CasAuthenticationFilter/filter-class init-param param-namecasServerLoginUrl/param-name param-valuehttps://cas.example.com/cas/login/param-value /init-param init-param param-nameserverName/param-name param-valuehttp://localhost:8080/param-value /init-param /filter filter-mapping filter-namecasFilter/filter-name url-pattern/login/url-pattern /filter-mapping filter-mapping filter-namecasFilter/filter-name url-pattern/*/url-pattern /filter-mapping !-- Shiro Filter 必須在最后 -- filter filter-nameshiroFilter/filter-name filter-classorg.springframework.web.filter.DelegatingFilterProxy/filter-class init-param param-nametargetFilterLifecycle/param-name param-valuetrue/param-value /init-param /filter filter-mapping filter-nameshiroFilter/filter-name url-pattern/*/url-pattern /filter-mapping關(guān)鍵點CharacterEncodingFilter必須第一否則ticket參數(shù)含中文時會亂碼CAS Server 解析失敗。casFilter的url-pattern/*/url-pattern不能省略否則/api/data等路徑無法觸發(fā)重定向。DelegatingFilterProxy的targetFilterLifecycletrue必須設(shè)否則 Shiro 的FilterChainManager初始化失敗所有RequiresRoles注解失效。4.2 spring-shiro.xmlShiro Bean 的 4 個強制依賴!-- spring-shiro.xml -- bean idsecurityManager classorg.apache.shiro.web.mgt.DefaultWebSecurityManager property namerealm refcasRealm/ !-- 1. SessionManager 必須指定否則 CAS 登錄后 Session 不持久 -- property namesessionManager refsessionManager/ !-- 2. CacheManager 必須啟用否則權(quán)限數(shù)據(jù)每次請求都查庫 -- property namecacheManager refshiroCacheManager/ /bean !-- 3. SessionManager 配置禁用 Shiro 自動創(chuàng)建 Session -- bean idsessionManager classorg.apache.shiro.web.session.mgt.DefaultWebSessionManager property nameglobalSessionTimeout value1800000/ !-- 30分鐘 -- property namedeleteInvalidSessions valuetrue/ !-- 關(guān)鍵CAS 場景下Session 由容器Tomcat管理Shiro 只讀 -- property namesessionDAO refmemorySessionDAO/ /bean !-- 4. CacheManager必須用 EhCacheRedis 需額外依賴 -- bean idshiroCacheManager classorg.apache.shiro.cache.ehcache.EhCacheManager property namecacheManagerConfigFile valueclasspath:ehcache-shiro.xml/ /bean避坑 / 常見問題 / 排查現(xiàn)象登錄成功后刷新頁面又跳回 CAS 登錄頁原因sessionManager未正確配置Shiro 每次請求都新建Subject無法關(guān)聯(lián)已有 Session。解決確認sessionManager的sessionDAO指向memorySessionDAOShiro 內(nèi)置內(nèi)存 DAO且globalSessionTimeout大于 CAS Ticket 有效期通常 10 分鐘?,F(xiàn)象RequiresPermissions(perm:xxx)不生效始終 403原因securityManager未注入cacheManager導(dǎo)致doGetAuthorizationInfo每次都被調(diào)用而你的userService可能返回空權(quán)限集。解決檢查ehcache-shiro.xml是否存在且路徑正確在CasRealm的doGetAuthorizationInfo開頭加日志確認是否被高頻調(diào)用?,F(xiàn)象CAS Server 注銷后Client 端仍能訪問受保護資源原因未配置SingleSignOutFilterClient 未監(jiān)聽 CAS 的登出通知。解決在web.xml中添加filter filter-nameCAS Single Sign Out Filter/filter-name filter-classorg.jasig.cas.client.session.SingleSignOutFilter/filter-class /filter filter-mapping filter-nameCAS Single Sign Out Filter/filter-name url-pattern/*/url-pattern /filter-mapping并在spring-shiro.xml中注冊singleSignOutHttpSessionListener?,F(xiàn)象CAS 校驗返回INVALID_TICKET但 ticket 明明剛拿到原因service參數(shù) URL 編碼錯誤或 CAS Server 白名單未包含當(dāng)前域名端口。解決用瀏覽器開發(fā)者工具抓包對比重定向 URL 中的service參數(shù)與 CAS Server 日志中收到的service是否完全一致包括大小寫、斜杠結(jié)尾?,F(xiàn)象Shiro 的Subject.getPrincipals()返回null無法獲取用戶信息原因CasRealm.doGetAuthenticationInfo()返回的SimpleAuthenticationInfo構(gòu)造時principal參數(shù)傳了username字符串而非User實體對象。解決必須傳User對象如上文代碼Shiro 才能在Subject.getPrincipals().getPrimaryPrincipal()中拿到完整用戶信息供 Controller 使用。5. 驗收與答辯用 3 類測試用例 1 份答辯話術(shù)清單拿下高分驗收不是“能跑就行”而是證明你真正理解了單點登錄的契約邊界。我?guī)н^的 17 個畢設(shè)/課設(shè)項目答辯高分的關(guān)鍵從來不是代碼量而是能否用三句話說清“誰在什么時候做了什么失敗了會怎樣”。5.1 三類必測驗收用例附預(yù)期結(jié)果與日志證據(jù)測試類型操作步驟預(yù)期結(jié)果關(guān)鍵日志證據(jù)位置正向登錄流1. 訪問http://localhost:8080/app/home2. 被重定向至https://cas.example.com/cas/login?service...3. 輸入 CAS 賬號密碼登錄4. 回調(diào)至/login?ticketST-xxx頁面顯示用戶姓名Subject.isAuthenticated()trueSubject.getPrincipal()返回User對象CasAuthenticationFilter.onAccessDenied()日志重定向 URLCasValidationService.validateTicket()日志XML 響應(yīng)CasRealm.doGetAuthenticationInfo()日志Found user: admin權(quán)限控制驗證1. 以普通用戶user1登錄2. 訪問/admin/dashboard需role:admin3. 訪問/user/profile需role:user/admin/dashboard返回 403 或重定向至/unauthorized/user/profile正常顯示CasRealm.doGetAuthorizationInfo()日志Loaded roles: [role:user]Shiro Filter 日志Authorization failed for user1 on /admin/dashboard單點注銷驗證1.user1在app1登錄2. 在app2登錄同一瀏覽器3. 訪問https://cas.example.com/cas/logout4. 切回app1刷新頁面app1頁面跳轉(zhuǎn)至 CAS 登錄頁Subject.getPrincipal()nullCAS Server 日志SingleLogout initiated for user1app1的SingleSignOutFilter日志Session xxx destroyed提示答辯時監(jiān)考老師大概率會讓你現(xiàn)場演示“權(quán)限控制驗證”。提前準(zhǔn)備好兩個賬號admin含role:admin和user1僅role:user并打開瀏覽器開發(fā)者工具的 Network 面板展示/admin/dashboard請求的響應(yīng)狀態(tài)碼403和響應(yīng)頭X-Shiro-Authz-Status: denied比講一百句原理都有力。5.2 答辯話術(shù)清單3 個高頻問題與滿分回答模板Q1為什么不用 Spring Security OAuth2而選 CAS Shiro? 標(biāo)準(zhǔn)回答“OAuth2 更適合第三方應(yīng)用授權(quán)如微信登錄而 CAS 是專為企業(yè)內(nèi)網(wǎng)單點登錄設(shè)計的協(xié)議。我們系統(tǒng)是封閉內(nèi)網(wǎng)環(huán)境所有子系統(tǒng)都可控CAS 的 ST/PT 票據(jù)模型比 OAuth2 的 Access Token 更輕量Shiro 比 Spring Security 更易嵌入老 SpringMVC 項目無需重構(gòu) Controller 層。這不是技術(shù)落后而是場景匹配?!盦2CAS Server 如果宕機業(yè)務(wù)系統(tǒng)還能登錄嗎? 標(biāo)準(zhǔn)回答“不能。CAS Server 是認證中心宕機即全局無法登錄。但我們的設(shè)計已規(guī)避雪崩1. 業(yè)務(wù)系統(tǒng)本地 Session 仍有效已登錄用戶不受影響2. 我們配置了 CAS Client 的failFastfalse在CasAuthenticationFilter中當(dāng) CAS Server 不可達時會降級為本地表單登錄需額外開發(fā)保證核心業(yè)務(wù)可用。這是生產(chǎn)環(huán)境必須考慮的容災(zāi)點。”Q3如何保證 CAS 返回的用戶屬性如 email不被篡改? 標(biāo)準(zhǔn)回答“CAS Server 與 Client 之間的通信全程走 HTTPS且每次票據(jù)校驗/serviceValidate都是 Client 主動發(fā)起的 Server-to-Server 請求票據(jù)本身由 CAS Server 用私鑰簽名Client 用公鑰驗證。XML 響應(yīng)中的cas:user和cas:attribute都在簽名范圍內(nèi)任何篡改都會導(dǎo)致 XML 解析失敗或簽名驗證不通過。所以只要 CAS Server 私鑰不泄露屬性就是可信的。”5.3 交付物清單與答辯前必檢項我的血淚經(jīng)驗?zāi)憬坏牟皇谴a是一份可驗證的工程交付物。答辯前我強制自己走一遍以下 checklist少一項答辯時就可能被問住?pom.xml中shiro-cas版本明確寫為1.4.2不是1.4.0或1.4.3并確認 Maven 依賴樹中無沖突版本?web.xml里CasAuthenticationFilter的casServerLoginUrl和serverName與實際部署地址一致開發(fā)用localhost答辯演示用192.168.x.x?ehcache-shiro.xml文件存在且內(nèi)容正確至少包含shiro-activeSessionCache緩存配置? 數(shù)據(jù)庫中user_role和role_permission表有測試數(shù)據(jù)user1用戶只關(guān)聯(lián)role:useradmin用戶關(guān)聯(lián)role:admin?CasRealm的doGetAuthorizationInfo()方法中userService.findRolesByUserId()返回的是SetString不是ListStringShiro 要求 Set從那以后我每次提交畢設(shè)代碼都強制走一遍這個 checklist并用手機錄屏演示完整登錄→權(quán)限攔截→單點注銷流程把視頻放在docs/demo.mp4里。答辯老師沒時間看代碼但一定會點開視頻看一眼——這一眼往往就是分數(shù)分水嶺。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品人妻无码久久久老鸭窝| 97欧美性爱| 91处女视频在线观看| 日本人人操人人操| 人妻无一区二区三区| 天天日天天干天天摸天天操| 亚州色站 日韩电影| 艹比视频国产精品| 日韩视频啪啪| 国产人妖的免费的视频| 国产精品点击进入在线影院高清| 欧美色91| 久湿久久| 97精品在线视频| 中文字幕诱惑制服人妻丝袜美丝袜美| 天天综合麻豆视频| 97色视频在线| 成人综合网 欧美| 久久午夜伦| 亚洲欧美激情在线视频| 一级特级aaaa毛片免费观看| 福利操逼| 牛黄色久午久| 欧美少妇熟女| 极品丝袜无码| 啪啪91| 天天日夜夜| 99ri视频| 嗯阿好爽好紧| 亚洲国产一区二区三区在线| 九九热男人天堂| av九九| 99热这里只有精品99| 亚洲国产激情国产av| 能直接看AV的网站| 丁香九月激情| 欧美嫩性色| 九九久久九九久久| 日本伦理一区二区| 亚洲性综合| 加勒比海成人视频网| 欧美72网页| 久久97资源 网| 性爱AV天堂| 啊啊啊好舒服视频在线观看| 综合性视频99| av无线看| 婷婷综合网| 欧插网站| 91麻豆一二三区| 韩日精品福利视频一区不卡在线免| 加勒比AV天堂| 校园春色美腿丝袜| 久久春色| 久久性爱免费送| 九九热在线精品视频| 涩涩五月天| 激情丁香五月| 天天看高清麻豆| 青青草原伊人网| 大香蕉伊人网| 亚洲九月丁香| 亚洲精品一二三四区| 97超碰无码网| 中文字幕精品专区搜索结果91| 四虎精品亚洲| 午夜性生活av免费在线看| 久久首页| 五月丁香色婷婷| 精品免费1| 夜夜高潮夜夜爽国产伦精品| 97超碰精品| 操逼逼一区视频| 中文字幕一区二区在线日韩精品| 狠狠穞A片一區二區三區| 亚洲情色1区| 日韩综合97P| 久啪视频| 精品v日韩欧美国产| 五月色综合| 97国产天堂岛| 大香蕉综合网| 少妇干B| 国产60区。| www.人人摸在线视频| 亚洲情色欧美| 99精彩视频| 欧美18禁91| 久久久久96| 日本乱人伦片中文三区| 人妻熟女av国产网站| 天天夜夜久久| 国内亚洲高清无码| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 人妻少妇av在线观看| 中文字幕乱碼在线| 操一操摸一摸| 亚射在线| 日本色色色网站免费看不卡| 欧美图片偷拍| 嗯嗯啊啊啊好爽| 久久久久成人亚洲国产| 亚欧美综合网。| 国内外内射高清视频| 久久香蕉国产线看观看猫咪av| 青青草在线视频欧美| 东京热男人天堂| 亚洲一区日韩| 亚洲女人91| 2024人人操人人摸| 亚洲国产97在线精品一区| av无线看| 亚洲男人综合网| 99re免费视频精品全部| 伦在线97| 黄在线| 日夜干射色啊| 色在线综合| 日韩人妻网站| 欧美日韩黄片精品在线| 亚洲天堂人人妻| 国产又黄又粗的视频| 少妇毛片久久| 国产操逼视频在线观看| 中文字幕十五区| 日韩精品 视频一区二区| 青青草乱入乱欲视频在线观看| 国产一区二区二区按摩精品啪视频| 久久精品人体AV| 欧美在线天堂| 操九九九九九九| 精品国产91内射久久| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 91在线观看,天天综合| 香蕉婷婷| jazzjazz国产精品麻豆| 免看60秒涩涩视频| 国产av白丝| 久久男人的天堂| 亚洲综合网电影91| 丰满人妻av一区二区三区| 国产欧美日产一区二区三区 - 国产欧美日 | 国产Aα| 青青草久久一区网| 人人艹亚洲| 国产第11页| 懂色AV蜜臀无码精品APP | 亚洲最新a在线观看| 亚洲国产中文字幕| 中文字幕-区二区三区四区视频中国| 日韩中文字幕精品一区在线| 偷窥自拍亚洲| 久久精品视| 久久久国产三级黄色片| 加勒比伊人| 欧美性爱网97| 4141514逼喷水三级片| 国产91av在线播放| 国产丁香精品露脸视频| 日韩熟女精品无码专区一区二区| 国产午夜无码片在线观看影视 | 大香蕉丝袜一级片| 你懂的在线观看区国产| 中文字幕免费看| 九九色热| 亚洲蜜桃V妇女| 亚洲爽图| 精品9999| 久久色AV线| 嗯嗯嗯好爽| 日韩欧美午夜一区二区| 美女性91| 少妇激情一区二区三区视频| 欧美猛交黑寡妇中文字幕| 手机看片1024你懂的国产| 亚洲欧美首页| 91中出在线| 午夜性| 国产成人+综合亚洲+天堂| 熟女激情综合网| 久久岛国| 久热这里只有精品9| 国产丰满熟夫69mpp| 久热这里| 97超碰美国| 99爱爱| 日韩精品人妻一| 久久久999| 亚洲人妻精品一区二区| 天欧美在线| 天天天天做夜夜夜夜做| 第45页一区二区| 亚洲情色第一页| 激情综合五月| 六月丁香婷| 五月天大香蕉| 国产欧美一区激情交| 人人摸人人添人人操| 精品美女久久久久| 亚洲日韩在线a不卡99精品| 99av| 欧美人与动性人交a| 亚洲图片欧美| 97在线免费视频| v91av| 九九AV| 精品无码久久久久久久久果冻糖心| 精品人妻一区二区三区蜜桃视频| 99热这里只有精品1| 9 9无尺码天堂网| 亚洲大胆人体av| 久久久国产精品人妻丝袜| 四虎免费看黄| 97精品国产精品免费观看| 久久国产对白激情浪潮 | 人妻天堂综合网| 亚洲欧美日韩夜夜| 亚洲色吧网| 久久免费中文字幕在线观看| 亚洲大色堂| 综合一区二区影视| 蜜臀久久99精品久久久久久成人小说| 怡春院久久| 色欧洲| 欧美97在线欧| 在线国产福利网址导航| 色久桃花影院在线观看| 中日韩熟女| 亚洲一区二区三区四区视频| 91网站18在线观看| 欧美在线55555| 超碰久久精品| 综合色好色| CCYY草草影院地址入口| 国产午夜激片Av毛片不卡| 国产精品久久久久久久久AV大片| 天天爽天天操| 黑人与人妻| 96精品久久久| 在线视频亚洲无码| 日韩精品一区二区日韩| 亚洲天堂久久| 天天夜夜久久| 亚洲无码日韩电影| 欧美性生活免费网| 欧美夜夜狠| 91美女在线视频| 快播久久人人aV| 久久大黄片| 久操网视频| 四虎影视国产精品| 免费a v| 不卡一区二区日本视频| 欧美性天天影视| 性交一区二区在线播放| 97超碰碰| 天天日天天操心| 激情四射五月天| 中文字幕乱亚洲美女精品一区| 国产又猛又粗又爽又黄| 黄页18禁| 高颜值美女口爆高潮浪叫| 伊人一区二区在线播放| 91亚州欧美| 国内精品99999| 美国人人操人人操| 伊人五月天青青草婷婷| 人人妻人人爽一区二区三区| 嫩草一区二区在线观看| 精品九九淫乱男| 国产操逼网站亚洲一级黄色| 大香蕉碰| 东京热,男人的天堂| 影视综合无码少妇| 美腿色图| 亚洲毛片基地专区| 水澄无码AV| 极品出轨视频网站| 五月婷婷色| 国产精品色| 亚洲成人av电影在线| 亚洲美乱| 99re98| 精品婷婷| 亚洲狠狠入| 熟女人妇一区二区三区| 国产精品第一页国产大屁股视频免费区i| 蜜臀99久久精品久久久懂爱| 91综合在线| 日日骚av| 五月综合久久| 校园春色五月天| 五月婷婷激情网| 最新AV在线| 99久久久久| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 91视频综合在线| 日日摸夜夜夜夜爽| 97欧美久久久久久久| 333kkkk·亚洲com久久| 丝袜天堂网| 亚洲国产成人精品无码专区| 亚洲综合另类色图| 丁香五月偷拍| 大香蕉乱级| 天色综合网| 人人操人人色人人摸| 欧美亚洲第1页| 欧美激情另类一区二区| 超碰午夜| 97五月天| 亚洲āv网址在线观看| 97操97色| 黄片免费看的| 外站AV在线| xxx亚洲午夜天堂| 亚洲天堂五月天国产| 日韩精品99久久久久久中文字幕 | 国产亚洲 中文欧美久久| 女人天堂av在线播放| 欧美日韩国第一区| 精品亚洲黄色片 国产精品导航一区二区| 亚洲青色欧美| 717影院理论午夜伦八戒| 97伦综合| 欧美97在线观看| 性影在线视频| 97欧美视频| 97视频900| 国产树林里野战在线看| 三级日韩一区二区三区| 乱色老一区二区三区的观看方式| 又大又长又爽| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 天天天操天天天爱| 欧美激情视频一区二区三区不卡| 中文字幕一区电影在线观看| 亚洲a色| 欧美白嫩女HD| 日本三级人妻a人妻一在线| 日日插夜夜| 日韩欧视频| 超碰在线974| 国产一区二区视频在线播放| 成人性爱AV在线免费观看| 日日摸日日弄日日拍| 红桃视频高潮| 久久久久久欧美精品se一二三四| 亚洲国产欧美另类自拍| 欧美性爱日韩高清| 精品一区二区三区丰满熟女-亚洲欧美一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 成人在线视频一区| 天天综合91在线| 无码人妻丰满热妇又大又粗| 中文字幕五月婷婷免费| 黄骗免费网站| 99热婷婷一区二区三| 天天色怡春院| 中文字幕版| 嗯嗯啊啊视频在线看| 懂色AV蜜臀无码精品APP| 熟妇综合一区二区三区| 97色色色| 久 久无码人妻AV| 亚洲有薄码区久久在线一区| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 另类av天堂| 丰满翘臀美女影院视频| 偷拍欧美综合| 高凊专区人人操| 99精品网| 99热这里是精品| 欧美婷婷五月天| 成人三一级一片aaa| 国产精品点击进入在线影院高清 | 精品久久視頻在线| 精品少妇后入一区二区三区四区人妻巨乳| 综合久久婷婷| 五月丁香| 另类图片五月| 中文一区二区婷婷视频| 97视频观看| 欧美三级一级| 久久超碰、| 97亚洲资源| 久久綜合很很很| 麻豆一区在线| 天天在线91| 日本亚欧爱爱| 中文字幕黄色一起草| 国语精品av| 欧美 亚洲 在线| 99re99| 日韩成人高清一区二区| 久久精品国内Av熟女高清| 天天操人人操狠狠插| 伊人丁香五月婷婷| 92午夜免费福利视频| 伊人色综合网电影| 久久欧美1卡2卡3| 国内操逼视频二区| 九九九九精品在线| 久久精品一区二区三区四区五区| 久久久久亚洲av综合波多野制衣| 亚欧性爱ab| 中文字幕在线免费观看视频| 综合激情97 | 综合久久97| 亚洲国产成人7777| 东亚亚洲无码高清| 亚洲激情网一二三四区| 欧美人人天天网| 上床啊啊啊| 97色伦97色伦国产欧美| 黄色一级视| av天天在线观看| 一级黄碟在线看| 又黄又硬又粗又长国产视频| 欧美日韩大香蕉| 日韩一级成人毛片免费观看| 蜜桃久久综合视频| 新视频sss国产| 日韩一级二级三级| 乳欲人妻办公室奶水| 激情五月天视频| 黑人中出21连凳花野真衣| 欧美 亚洲 91| 搡老女人老91妇女老熟女| 九九干| 欧美亚洲综合色| 亚洲的天堂网| 久久 国产 无码| 人妻22p| 大香伊人在线一区| 精品传媒在线一区| 成人网址在线观看| 精品美女人人干| www.色吧5.com| 久久久久国产一区二| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 91无摭挡| 国产久久av| 爱干爱射网啊啊啊| 天久久久噜噜噜久久国产精品爽爽 | 五十路三级片| 国产熟妇一区二区| 无码高清少妇久久| 97国产色综合| 玖玖久久久| 国产成人无码网站在线视频| 91女优在线观看| 狠狠操,使劲操| 日韩av女优在线免费一区| 亚洲精品97p| 国产不卡免费在线视频| 黄色高清久久无码依人| 一级一性爱免费视频| 99热精品在线| 青青操日韩| 欧美东京热精品A∨| 亚洲凸凹超碰成人| 色天使亚洲综合在线观看| 2025亚洲男人天堂| 色吧5亚洲| 亚洲熟妇无码一区二区三区| 精品国产一区探花在线观看| 国产有码一区| 伊人久久综合影院精品久久久| 日韩亚洲美州欧洲综三区一品在线| 国产乱不卡| 黄aaaaaaaaaaaaaaaaaa色网站| 色欧洲97| 大香蕉久操| 久久久久国色αv免费观看| 欧美性生活综合| 校园春色第一页| 亚洲精品男人的天堂| 欧美情色亚洲| 吻戏激情性巴克| 女色综合| 97精品视频免费| 黄色在线网站| 少妇贴图| 蜜桃精品一区二区三区ww| 国内毛片欧美香蕉精品| 国产丰满熟夫69mpp| 免费9 1久久| 中文字幕五月婷婷免费| 丝袜狂射91| 日本色婷婷| 中文字幕欧美丝袜07资源| 九九精品美女高溯喷水| 亚洲精品国产熟女| 国产丁香精品露脸视频| 青青欧美在线| 黄片com.| 九九久久久| 色超碰综合| 国产精品老师| 日本久久女同性恋视频| 日韩淫色网| 超碰亚洲97| 黄片免费看的| 麻豆精品.欧美精品.日韩精品.| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | av九九| 91久久九九精品国产综合| 超碰欧美在线欧美| 亚洲国产精品久久久久婷婷青年| www.大香| 绯色一区二区三区不卡少妇 | 欧美一区二区亚洲天堂| a片久久久久久久久久久久 | 人妻天堂网| 伦在线97| 亚洲男人的天堂V| 欧美国产伊人久久久久| 青青操网| 人人澡人人干| Aa东京男人的天堂| 黄色成品网站| 黑丝少妇在线观看| 操婷婷逼| 国产一级不卡在线观看| 亚洲精品一区二区日本| 99re28在线观看| 亚洲美女 晚间男人天堂 | 大香蕉中文网| 热久久无毒不卡| 大香蕉欧美伊| 少妇熟女视频一区二区三区| 中文字幕一二三av| 五月丁香色婷婷| 天天摸天天舔天天操| 五月天开心网| 无码精品蜜桃一区二区三区ww| 好吊色综合| 四虎影视永久在线观看精品免费网站| 丰满少妇一区二区三区四区观看| 婷婷色中文字幕| 老司机老司机午夜影院| 青娱乐欧美激情一区二区| 91狠狠综合网| 久热热| 国产人妻久久精品一区二区三区| 日韩大香蕉精品在线视频| 亚洲色9| 欧美激情视频一区二区三区不卡| 精品女人999| 九九激情网| 激情久久av一区av二区av| 久久五月天婷婷丁香中文字幕| 翔田千里A片一区二区| 射久久| 91成人在线| 久久精品亚洲东京热色播| 在线播放中文字幕| 97人人射| 国产欧美日韩女同性恋ww喷水精品 | 国模无码人体一区二区三| 人人妻人人澡人人爽久久av| 美女高潮国产高清| 国产乱子伦久久精品综合一区二区三| 久久精品无码一区二区三区| 丝袜美腿操av| 日比av无码| 天堂性色| 蜜臀一区二区三区在线 | 亚洲精品 超碰| 嫩草伊人久久精品| 丝袜狠狠草尤物 91| 免费亚洲国产精品久久一区| 久久9999 | 日本日皮视频逼| 国产精品亚洲免费| 久久久一级| 啊啊啊好湿国产一二| 四季AV综合网址| 一区二区视频你懂的| 十八禁电影伊人网| 精品人妻一区二区三区视频在线| 超碰97欧美| 91丨九色丨国产丨人妻在线| 色嗨嗨在线| 96久久精品一二三区色欲| 欧美日韩操逼嗦吊| 在线观看十八禁| 欧美猛交黑寡妇中文字幕| 国产91专区| 91天堂网| 91碰超| 天天爽天天操| 白 大 人妻 区 在线| 33044男人的天堂深夜备| 91老熟妇| 人人干人人操人人..com| 97色婷婷| 99热18这里只有精品| 花花AV导航| 色天使亚洲综合在线观看| 丁香九月激情啪| 久热精品色情| 久久伊人影院| 思思热影视| 99热亚洲天堂| 中文字幕一区二区日韩网| 天天插天天操| 日韩中文字幕av在线播放| 亚洲久草AV色图| 国语av狠狠色丁香婷婷综合激情| 色欲日韩欧美在线一区| 亚洲精品蜜桃久久久一区二区三区| 亚洲美女黄色| 级做a爱无码性色永久免费| 久久精品性| 91爱看| 91东北熟女| 91精品国产高清久久久久久,亚洲成人 | 久久、1234| 色逼综合| 婷婷五月天影院| 吉川爱美亚洲二区在线 | 97这里都是精品| 亚洲小说视频| AV无码久久久精品| 九九热精彩视频| 性色AV网站| 五月天婷婷基地| 久久久久深夜无码| 嗯啊抽插大香蕉网页| 特级大荫道BBwBBwBBW| 不卡视频一区蜜桃视频 | 综合自拍| 欧美亚洲中文字幕| 久9爱经典视频| 欧美极品性爱天天射| 久久中出在线| 懂色中文一区二区三区| 人人色人人射人人妻| 欧美日韩97| 国产一区96在线| 天天干人人乐| 啊啊啊不要好疼视频| 国产精品另类| 精品色色| 亚洲图片欧美色| 啊啊啊好爽快点啊啊啊嗯嗯| 午夜精品久久99蜜桃的功能章节 | 欧美国产精品久久九九| baisiav| 欧美亚洲综合高清在线| 91是天天| 亚洲国产精品无码AV久久久| 日本不卡二三区| 26uuu偷拍亚洲欧洲综合| 美女主播色欲91抠b在线播放| 欧美一区二区一级岛国大片| m欧洲一级午老| 操逼国产免费| 亚欧美综合| 色婷婷影院| 超清中文乱码字幕| 欧美日韩少妇色情| 搡老女人老妇女AAA一VU麻豆| 色欧洲97| 丁香五月婷婷五月| 啪啪性爱免费视频| 亚码人妻| 国产精品国产拍高清AV| 亚洲丝袜少妇在线| 97中文字幕色| 亚欧高清v| 色综合91好| 黑人中出21连凳花野真衣| 亚洲熟女性高潮久久久| 99超碰网| 熟妇视频一区二区三区在线观看| 国产无码高清操逼视频| 中文字幕在线第二页| 亚码激情| 久草国产在线视频| 欧美日韩亚洲天堂| 蜜臀AV成人精品蜜臀| 丁香五月激情综合国产| 91精品国产91久久福利| 是还免费视频1727我| 开心婷婷五月| 精品中文字幕一区二区| 超碰在线免费一区二区三区| 亚洲棕合电彰| 综合久| 影视综合无码少妇| 色欧美综合| 天天激色| 天天干2019| 日韩精品永久在线观看| 天美传媒婬乱| 日韩97精| 青娱乐大香蕉| 97九色人妻| 成人免费福利网站国产| 色综合一本| 日本精品加勒比海一区| 青青草成人视频在线观看二区| 开心五月激情网| 国产网红精品| 亚洲精品自拍| 婷婷爽人人婷婷爽视频| 蜜乳av一区二区三区| 宅男午夜在线视频| 亚洲人成网www| 91|九色|国产熟女| 一本大道不卡一二三区| 亚洲春色一区二区三区| 欧美日韩精品久久久久久久久东北老熟妇| 中国小夫妻勾搭露脸淫荡对白| 91久久久久久久久久久| 超碰人人干| 无码乱人伦中文视频| 麻豆视频国产一区二区| 夜夜爽夜夜爽| 神马麻豆福利院| 国产超碰欧美| 久久精品视| 啊啊啊好大好湿| 九九久久一区二区三区| 91大胆欧美| 九九热在线视频| 国产97色在线| 欧美日韩第一页| 强奸乱伦动态污图免费| 日韩AV无码中文一区二区| 都市久久精品激情亚洲| 亚洲码在线中文在线观看| 国产真实子伦对白| 人人操人人93| 日韩电影在线观看网址| 天天日天天干天天操| 欧美色涩| 午夜啪| 日韩三级在线观看网站| 欧美日韩午夜精品一区二区三区| 国产内射爽爽大片| 午夜成人爽爽爽爽A片李冰冰| 色欧洲| 成人羞羞视频国产| 欧美激情性久久久久久| 大香蕉www.超碰| 精品毛片av一区二区| 日韩国产欧美伦理在线| 乱论91| 日韩一级欧美一级在线观看| 日韩成人性爱电影在线播放| 8050无码八戒| 天天做天天爽| 精品91摸| 青青草字幕AV| 亚洲少妇自拍中文字幕懂色| 麻豆熟妇乱妇熟色A片在线看| 欧洲亚洲少妇| 亚洲中文字幕精品一区| 午夜AV人气不卡| 天天日天天干天天整| 国产精品大香蕉| 中文字幕一区 二区三四五 区日 日骚| 天美av在线观看| 日本精品免费一区二区三区四区| 97频视在线| 麻豆熟妇乱妇熟色A片在线看| 久草午夜| 成人性爱视频在线看| 久久激情视频| 免费农村成人少妇人妻Aa一区二区视频| 97 超碰 人人做 人人爱| 97爱碰| 99re久久| 天天色黄色影院天天操| 国产在线视视频有精品| 青青草原综合久久大伊人精品| 日本九九久久99| 久热热| 国产野战露脸在线播放| 婷婷天堂站| 国产精品久久久777| 亚洲,欧美,综合网| 蜜乳AV免费观看| 久久婷婷影院| 91成人社区| 黄页av| 亚洲精品天堂久久A∨51成人漫| 91狠狠综合久久久久久| 青青草色情网站视频| 最新AV在线| 极品尤物自安慰| 神马久久久久眼| 青青草在线视频美女| 国产精品久久久久久高清无码免费看| 综合色色网| 美女AV一区二区| 搡老女人老熟女91| 中文字幕一区二区三区视频播放| 91性生活久久久| 999精品乱码| 国模精品娜娜一二三区| 日本一天色道久久久精品视频| 男人的天堂VA| 欧美日韩中文亚洲v在线综合| av婷婷色网| 97在线免费看视频| 国产精品自拍欧美在线| 99精品丰满人妻| 91性高朝久久久久久久久| 婷婷五月花| 麻豆熟妇乱妇熟色A片在线看| 中文字幕乱在线伦视频中文字幕乱码在线 | 久久一二三四不卡 | 97超碰碰碰| 亚洲精品欧洲色| 欧美中出1| 97天天在线| 精品人妻av在线播放| 色情亚洲日本成人| 亚洲AV麻豆Aⅴ无码电影一| 日夜啪电影| 啊啊啊久久| 大奶啊啊好爽| 日韩少妇无码| 又黑又大又粗| 七月婷婷综合| 很黄很污的免费网站| 亚洲伊人成综合成人网| 久无码| 日本成a人v网站在线观看| 久久国产精品一级二级三级| 女人久久久| 少妇蜜汁| 亚洲日韩精品久久久久一区壹牛| 红桃视频高潮| 免费?级毛片无码?∨蜜芽试看| 精品久一区免费| 国产亚洲精品一区二区三区| 色婷婷综合久久中文字幕雪峰| 日本人妻伦在线中文字幕| 有码免费观看| 欧美一区二区福利在线| 老鸭窝黄色视频网站| 大黄片做爱的大的| 欧美体内射精| 大香蕉综合| 蜜臀久久99精品久久久久久无删减 | 亚洲小电影免费涩涩成人在线高清| 超碰人妻中文在线| 国产h片在线观看视频| 男人成人黄色视频在线观看免费下载| 91快色色色色色| 国产2.3.4区| 国内精品999| 婷婷在线视频在线观看| 欧美男人亚洲天堂| 国产91久久九九免费精品无码| 狠狠色五月亚洲91| 天堂av2019| 亚洲中文字幕久久人妻| 骚日日av| 啪啪视频mP4| 亚洲国产奇米影视久久| 性感美女91影视| 九色 人妻 大香蕉| 尤物网址| 怡红院成人视频| yazhousetuoumei| 韩国三级理论在线| 亚洲色婷婷久久久综合日本| 久久久99999久网站| 久久激情综合| 秋霞网—男女啪啪亚洲免费体验区| 九九九九免费视频| 日韩美脚一区二区网站| 亚洲中文一区二区三区| 婷婷午夜清品久久久久久久性色视频观| 国产自产91区13区| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 视频在线观看一二三区| 黄片com.| 国产成人亚洲精品无| 天天射夜夜| 亚洲18禁| 欧美网站免费| 另类小说综合网| 大逼色网站| 日本九九久久99| 欧美乱色| 婷婷五月激情综合| 在线观看免费视频国产| 亚洲全色网| 日本不卡中文| 国产一区二区久久| 亚洲情色婷婷五月天| 人人插人人搞人人操| 国产日韩色综合| 2017亚洲天堂| 久久久无码精品人妻二区| 国产不卡中文字幕免费avi| 屌色在线97视频| 国产av美女被艹的乱叫| 国产精品女生av| 久久的免费性爱视频| 秘书高跟黑色丝袜国产91在线| 日日做夜狠狠爱欧美黑人| 97综合在线观看| 天天日天天插| 丁香色色网| 国产吞精a级片激情电影| 欧美十八禁导航成人| 黑人精品一区二区在线播放| 亚洲综合另类| 九九九九精| 91色插| 91高清欧美| 亚洲色天堂九9| 啊啊啊在线看| 色97综合中文字幕| 国产免费一区| 超碰97首页| 亚洲精品一区二区免费在线观看| 日韩人妻无码精品系列| 操人妻逼91| 亚洲精品骚逼| a人欧美综合天堂麻豆| 欧洲乱码一区二区| 欧美 青青草| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 青青草九九九九九| 夫妻四区五区六区| 亚洲欧美九九九| 亚洲国成人情色好看电影| 亚洲欧美另类少妇精品| 97资源欧美| 欧美激情久| 97热视频在线观看| 人妻精品一区一区三区蜜桃91| 久久久一区二区| 熟女熟妇一区二区三区视频| 一本一道久久综合久久| 天躁夜夜躁2021| 欧美色图综合网| 超碰午夜| 精品成人亚洲午夜电影| 日本午夜操逼| 天天天天天干夜夜夜夜夜操| 爱射综合| 久久久精久久久| 伊人操操| 色欧美色交综合| 精品久久久久久久| 国产精品黑人一区二区三区| 久久国产免费激情视频| 无码高清专| 加勒比大香蕉视频在线| 四虎影视在线| 动漫av中文| 日日骚一区二区三区| 97超碰色| www.99中文字幕| 色色综合网站| AV天堂男人的天堂| 色色青青久久| 国产60页| 91久久精品中文字幕| 日韩成人电影AV| 中文字幕在线观看网页| 91国精产品| 91色香| 亚洲天堂人妻熟妇视频| 狠狠综合| 97国产天堂岛| 清纯唯美综合| 老子午夜伦不卡影院| 欧美成人午夜免费福利785| 日韩亚洲美女一区久久| 好爽免费视频,| 啊啊啊操死我| 亚洲日韩美女中文字幕乱| 天天操夜夜操| 色妇91| 91欧洲国产成人久久精品网站| 久久久久久国产无码精品| 中文字幕在线观看丝袜| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国产精品区在线12p| 欧美激情综合| 久久熟女久| 无码一区免费在线不卡| WWW黄片COM| 青青青青草av在线观看| 少妇高潮一区二区三区在线| 亚洲精品毛片在线观看| 天美av在线观看| 亚洲中字慕不卡| 午夜操逼不卡| 亚洲欧洲小说图片视频| 欧美色爱综合| 免费精品人妻一区二区三| 人妻天天爽夜夜爽爽| 69久久| 亚洲欧美中文一区二区三| 91久久久久久久久久久| 亚洲骚逼少妇| 粉嫩在线一区二区懂色| 欧美国产成人在线| 成人26uuu| 青青青操| 亚洲欧洲激情卡通另类文学四射小说网站 | 8050午夜少妇无码| 18禁久极品美女久久哦哟呀!| 日本熟妇浓毛hdsex| 亚洲色图大香| 97ai亚洲| 亚洲精品成人激情在线| 制服诱惑亚洲一区二区三区在线观看| 综合久久久久久久久91| 性感女人网页在线观看视频| 最新制服中文第一页| 国产热RE99久久6国产精品首| 久久综合久色欧美综合狠狠| 97在线观看播放视频| 青青青青草av在线观看| 国产真乱mangent| 日韩精品三区四区| 婷婷超| 天天摸夜夜摸| 亚洲欧美国产va在线播放频| 艳美熟妇先锋一二三区| 久久97超碰| 亚洲欧洲美腿丝袜| 最新亚洲黄色免费电影 | 色色毛片| 一及黄久一点| .精品人妻一区二区三| 麻豆天美制片厂网站视频| 国产精品久久久久久高清无码免费看 | 天天性射网| 国产精品成人在线| 天天躁日日躁狠狠狠躁| 日日干夜夜干| 白丝一区| 欧美少妇内射| av日韩国产一区二区| 碰超人人在线一区二区三区| 顶级丝袜熟女一区二区三区| 碰人碰碰人人开房人肉| 亚洲精品中文字幕一区在线视频 | 91国产精品在线看| 人妻少妇精品| 欧美熟女激情| 二男一女成人A片| 国产精品69久久久久孕妇欧美 | 欧美亚州综合网图片| 欧美男人一区| 人妻9117c| 我爱搞逼综合网| 97久久超碰| 国产一级高清免费观看| 97中文字幕色| 午夜理论片在线观看免费| AV女资源| 欧美专利1区2区3区4区5区免费| 人妻丰满熟妇一区二区三| 欧美成人国产精品| 亚洲 日韩 欧美 国产综合体| 天天草天天日| 中文字幕在线2| www.色五月| 97资源视频| 欧美午夜熟妇黑人精品91| 神马视频久久久久久| 久久毛卡| 男人天堂网站| 国产精品在线一区二区| AV天天在线观看| 加勒比在线观看一区二区| 97人人夜| 884t在线| 五月婷婷大香蕉| 先锋激情∨在线视频播放| 亚洲欧美综合图片| 香蕉久久精品| 骚逼高潮久久精品| 又粗又长又爽在线观看| 欧美se综合| 色哟哟av网址| 精品网站9999| 中文字幕在线免费观看视频| 日韩免费三级黄片电影| 欧美综合天堂| 欧美亚洲国产日本在线,久久精品国产| 婷婷五月天基地| 思思热国产在线视频| 狠狠超| 999久久久久久久久| 丁香婷婷激情五月天无毒不卡 | 欧美激情亚洲| 亚洲91网站| 91亚洲不卡一区| 91狠狠色丁香婷婷综合久久精品| 亚洲啪AⅤ永久无码| 好属操| 色婷婷日韩精品一区二区三区| 天天天乱色综合全| 婷婷五月天补不补| 久久久97| 大色综合网| 久久黄色性爱视频| 人人模人人看| 啊啊啊啊操死我| 麻豆尤物视频网| 国产风韵犹存熟妇三区| 北条麻妃性愛视频| 91 国产丝袜在线放观看| 国内外色色色色色成人视频| 国产 v乱码一区二| 中文字幕一区二区免费在线| 在线a亚洲视频播放在线| 九久精品| 东京热av影院| 久久久女人| 亚洲欧美激情小说| 我想要 啊 啊 啊| 浪人综合网| 久久亚州精品成人Av无| 国产熟女精品一区二区| 久久久久国色αv免费观看| 亚洲97网站| 少妇高潮喷水无套久久久久久| 大香蕉啪啪啪啪在线| 超碰人妻久久人妻中文97| 九久9热| 少妇六月天| 一级黄碟在线观看| 熟女中出视频| 男生女生啊啊啊啊| 91成人国产综合久久精品蜜月| 麻豆久久久久久久久丝袜| 91 丝袜在线| 国产女同性恋视频| 亚洲视频,小说| 人妻爽爽啪视频| 2026国产精品视频| 99热18这里只有精品| 欧美在线|亚洲| 亚洲综合草草| 久久亚洲一区女同性恋中文字幕| 九九九成人| 蜜臀久久99精品久久久久久酒店 | 26uuu国产免费观看| 欧美日韩操逼嗦吊| 九月婷婷| 丰满人妻一区二区三区在线| 蜜伊人色综合97|