日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring mvc 3.0 入门及应用

發(fā)布時間:2025/3/19 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring mvc 3.0 入门及应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【一】Spring應用

?

Spring?支持json格式的jar

?

jackson-all-1.7.3??http://jackson.codehaus.org/

?

?

?

Spring MVC 3.x annotated controller的幾點心得體會

?

(最優(yōu)化使用http://www.javaeye.com/topic/828513)

?

一、callback回調

?

template method(模板方法設計模式)-hibernateTemplate

?

?

?

二、JPA2.0的配置

?

src/META-INF/persistence.xml

?

?

?

webContent/META-INF/context.xml

?

?

?

webContent/WEB-INF/applicationContext.xml

?

?

?

?

?

三、Hibernate配置

?

【二】spring3.0.5與hibernate3.6.1(JPA2.0)整合

?

?

?

【三】springMVC使用

?

?

?

?

?

?

?

Spring MVC核心??流程示意圖

?

Dispatcher Servlet??--front controller前端總控制器

?

?

?

Controller???--應用開發(fā)的控制器,實現(xiàn)controller接口,

?

?

?

Handler Mapping??--控制器的映射,控制controller策略

?

?

?

ViewResolver??& View --視圖策略,View是試圖預處理

?

?????????????InternalResourceViewResolver --jsp和jstl的解析器,

?

?

?

?

?

?

?

Interceptors?:攔截器

?

?

?

LocalResolver?:國際化

?

?

?

Validate?:驗證

?

?

?

?

?

ClassNameHandlerMapping?類名控制器--按類名匹配的abc.test的AbcController

?

BeanNameUrlHandlerMapping <bean name="/to_add.test" class=""/>

?

?

?

?

?

?

?

?

?

?

?

--------------------------------基于注解的MVC

?

基于注解的SpringMVC

?

?

?

一、@Controller??-類上

?

?

?

@RequestMapping --修飾兩種類型:方法上?和?類上

?

??(1)類級別上:表示首先定義了相對的父路徑,那么在方法上定義的路徑是相對于類級別上的。

?

??(2)方法上:如果類級別沒有RequestMapping映射,則相對于應用,如果類級別有,則是相對于

?

類級別的注解的路徑

?

?

?

?

?

二、路徑變量:restful風格?--PathVariable

?

?

?

http://localhost:8080/@mvc/test/start/zhangsan.do --請求的參數(shù)作為url的一部分來存在

?

?

?

http://localhost:8080/@mvc/test/start/lisi.do

?

?

?

@RequestMapping("/start/{name}/{age}")

?

public String start(@PathVariable("name")?String name,@PathVariable("age") int

?

nianling){ //此處name與上面的name一致,

?

?

?

}

?

//此處注意:java編輯的debug模式?和release模式

?

?

?

?

?

三、根據(jù)不同的請求方法(POST/GET),映射到不同的處理方法

?

?

?

@RequestMapping(value="/start",method=RequestMethod.GET)

?

public String PostStart(){ /

?

?

?

}

?

?

?

@RequestMapping(value="/start",method=RequestMethod.POST)

?

public String start(){ /

?

?

?

}

?

?

?

四、數(shù)據(jù)綁定,注解中的實現(xiàn)

?

?

?

@RequestMapping(value="/{test}",method=RequestMethod.GET)

?

public String start(){ /

?

?

?

}

?

?

?

@Initbinder??--初始化綁定器標注

?

public void initbinder(WebRequestDataBinder binder,HttpServletRequest request){

?

?

?

??binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat

?

("yyyy-MM-dd"),false));

?

?

?

}

?

?

?

五、處理請求的方法,接收的參數(shù)和返回的參數(shù)

?

?

?

1.接收的參數(shù):數(shù)量與順序沒有要求

?

=

?

(1)沒有參數(shù)()

?

(2)(@Pathvariable anyType)

?

(3)(request,response,session,)

?

?//session的前提,當前請求session可用。

?

(4)request參數(shù)@RequestParam??anyType //--?id=45參數(shù),通過類型轉換器轉換

?

(5)@CookieValue anyType??CookieName???//cookie值取出,通過類型轉換

?

(6)@RequestHeader("user-Agent") AnyType abc???--從請求的頭部中取出正確的值,例如(user-

?

Agent,content etc)

?

(7)經(jīng)常調用out = response.getWriter()

?

@RequestMapping

?

public void??testAllArguments(PrintWriter out){

?

//out = response.getWriter();

?

  • out.println();

?

}

?

?

?

(8)??可以是Map

?

public ModelAndView test(Map model){

?

?????????//返回modelandview

?

?model.put("","");

?

?return new ModelAndView("viewName");??

?

}

?

?

?

(9)表單參數(shù)生成bean?注入

?

public String test(User user,BindingResult result)

?

//user自動為command對象,直接注入,此處要進行數(shù)據(jù)綁定的處理(進行綁定器)

?

//BindingResult --??處理錯誤綁定信息,判斷是否綁定錯誤信息,進行處理,與數(shù)據(jù)驗證有關

?

?

?

2.返回值類型

?

(1)void -直接輸出結果,兩種情況:

?

第一:有out對象輸出:out.print

?

第二:沒有out輸出的話,會生成一個隱含的viewName-->按請求路徑解析出的

?

${appname}/test/xxx.do -->/WEB-INF/page/test/xxx.jsp

?

?

?

(2)String?類型:viewName

?

(3)任意類型AnyType對象?--//model("user",user) ,user自動填充到模型中。試圖名為默認解析

?

的名字

?

?

?

public User testUser(){

?

?

?

}

?

(4)返回list --//model.("userList",list)

?

public List<User> queryUsers(){

?

?????????return null;

?

}

?

(5)Model,Map,ModelAndView?只返回模型是,試圖名按默認解析

?

?

?

六、重定向視圖?return "redirect:/usr_list"

?

?

?

@Controller

?

@RequestMammping("/user")

?

publc class UserController{

?

????????

?

?????????@RequestMapping(method=RequestMethod.GET)

?

public String addForm(){

?

?????????return "add_user";

?

}

?

@RequestMapping(method=RequestMethod.POST)

?

public String addUser(User user){

?

?

?

?????????return "redirect:/user_list"; //重定向視圖,防止再次進行提交操作,重復提交

?

}

?

}

?

產生原因:request.forward();-帶著參數(shù),由服務器轉到另外一個方法

?

response.sendRedirect(b) --重定向方法,不帶參數(shù)轉換,瀏覽器知道發(fā)生了改變,瀏覽器?再次

?

發(fā)生一次請求b

?

解決方法:將結果重定向到?另一個頁面:return "redirect:success";

?

?

?

七、ExcelView??JsperReport,Pdf,XML視圖

?

?

?

八、攔截器,視圖的國際化,表單驗證

?

?

?

1.攔截器:全局日志,權限管理(攔截器細粒度)

?

?

?

(1)定義一個攔截器,多個攔截器形成鏈:實現(xiàn)HanderInerceptor接口,三個方法

?

?

?

preHandler()

?

postHandler()

?

afterCompletion()

?

(2)配置攔截器:

?

<mvc:interceptors>

?

?????????<mvc:interceptor>

?

???????????????????<mvc:mapping path="/usr/*"/> --可選

?

???????????????????<bean class="test.web.myInerceptor"/>

?

?????????</mvc:interceptor>

?

</mvc:interceptors>

?

?

?

2.國際化(視圖)--中文/英文/日文/韓文

?

?

?

引入spring標簽庫:

?

<%@ tablib??uri="http://www.springframework.org/tags" prefix="spring" %>

?

?

?

<div>

?

?????????<spring:message code="welcome"/> --引用屬性文件的welcome

?

</div>

?

配置資源文件

?

<bean id="resourceMessage(此名不可變)"

?

class="org.sf.context.support.resourceBundleMessageSource">

?

?????????<property name="basename" value="mess"/>

?

?????????<property name="basenames">

?

???????????????????<value>...</value>

?

???????????????????<value>...</value>

?

?????????</property>

?

</bean>

?

?

?

3.驗證Validate(Spring后端驗證采用JSR-303 validate bean標準,前斷用javascript)

?

后端用@Valid注解?--自動調用約束條件驗證,條件在實體類中指定

?

?

?

比較的好的實現(xiàn):hibernate - validator 4.0?

?

?

?

class User

?

{

?

@NotEmpty

?

private string name

?

@Size(max=20,min=6)

?

private String password;

?

?

?

}

?

?

?

public String addUser(@Valid User user,BindingResult result){

?

?

?

}

?

九、對json的原生支持

?

spring mvc ajax?使用json

?

http://liyixing1.iteye.com/blog/1098743

?

【四】spring與spring3.0.5_quartz1.8.4整合

?

(e:\openprojects\spring)

?

http://www.javaeye.com/topic/906313?關于調度的框架

?

?

?

【五】spring3.0.5與zk5.0.5的集成詳細說明

?

http://www.javaeye.com/topic/891134

?

?

?

?

?

?

?

?

?

?

?

【六】SpringSecurity配置

?

重要參考文獻:http://sarin.javaeye.com/blog/829738

?

準備jia文件

?

一、??????基礎配置

?

1.配置過濾器

?

?

?

1.??<context-param>??

2.??????????<param-value>??

3.??????????/WEB-INF/board-service.xml??

4.??????????/WEB-INF/board-security.xml??

5.??????????</param-value>??

6.??????</context-param>??

1.??<filter>??

2.??????????<filter-name>springSecurityFilterChain</filter-name>??

3.??????<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>??

4.??????</filter>??

5.??????<filter-mapping>??

6.??????????<filter-name>springSecurityFilterChain</filter-name>??

7.??????????<url-pattern>/*</url-pattern>??

8.??????</filter-mapping>?

?

?

?

過濾器配置:初始化參數(shù)和?springscurity過濾器

?

?

?

2.SpringMVC?的sevlet配置

?

?

?

1.??<?xml?version="1.0"?encoding="UTF-8"?>??

2.??<beans?xmlns="http://www.springframework.org/schema/beans"??

3.??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??

4.??????xmlns:security="http://www.springframework.org/schema/security"??

5.??????xmlns:context="http://www.springframework.org/schema/context"??

6.??????xsi:schemaLocation="http://www.springframework.org/schema/beans??

7.??http://www.springframework.org/schema/beans/spring-beans-3.0.xsd??

8.??http://www.springframework.org/schema/context??

9.??http://www.springframework.org/schema/context/spring-context-3.0.xsd??

10.?http://www.springframework.org/schema/security??

11.?http://www.springframework.org/schema/security/spring-security-3.0.xsd">??

12.?????<context:component-scan?base-package="org.ourpioneer.board.web"?/>??

13.?????<bean??

14.?????class="org.springframework.web.servlet.view.InternalResourceViewResolver">??

15.?????????<property?name="prefix"?value="/WEB-INF/jsp/"?/>??

16.?????????<property?name="suffix"?value=".jsp"?/>??

17.?????</bean>??

18.?????<security:global-method-security??

19.?????????jsr250-annotations="enabled"?secured-annotations="enabled"?/>??

20.?</beans>??

?

?

?

以上配置springsecurity配置為支持注釋形式。Spring security配置的文件,必須在springmvc初始化的配置文件中初始化,否則不起作用。也就是說secrrity的配置文件必須和spring mvc的配置文件?都被spring MVC放在一起(web.xml配置springmvc時,init-para也要把security的放進去)框架加載。

?

?

?

3.配置自定義登錄界面

?

1.??<security:http??access-denied-page="/accessDenied.jsp"?>??

2.??????<security:form-login?login-page="/login.jsp"??

3.??login-processing-url="/login"?default-target-url="/messageList.htm"??

4.??????????????authentication-failure-url="/login.jsp?error=true"?/>??

5.??????<security:logout?logout-success-url="/login.jsp"?/>??

6.??</security:http>??

?

?

?

(1)login-page屬性配置的是登錄頁面;access-denied-page:自定義訪問拒絕(無權訪問)頁面。

?

(2)login-processing-url就是我們處理登錄邏輯的請求地址,默認的是j_spring_security_check;

?

(3)default_target_url就是默認的登錄成功轉向的目標地址,這里是消息列表頁面。

?

(4)authentication-failure-url,驗證失敗轉向的頁面,這里我們附加一個參數(shù)error,頁面里面也有體現(xiàn),就是用它來控制失敗信息的打印的。

?

(5)logout-success-url就是退出后轉向的頁面,這里是到登錄頁面,沒錯,退出后回到登錄頁面。

?

二、從數(shù)據(jù)庫中讀取用戶信息

?

三種方式:標準數(shù)據(jù)表方式??、自定義數(shù)據(jù)表方式?和?屬性文件properties方式

?

1.標準數(shù)據(jù)表

?

(1)???????數(shù)據(jù)表:

?

(2)????CREATE?TABLE?`users`?(??

(3)??????`USERNAME`?varchar(10)?NOT?NULL,??

(4)??????`PASSWORD`?varchar(32)?NOT?NULL,??

(5)??????`ENABLED`?tinyint(1)?NOT?NULL,??

(6)??????PRIMARY?KEY?(`USERNAME`)??

(7)????)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8??

(8)??????

(9)????CREATE?TABLE?`authorities`?(??

(10)????`USERNAME`?varchar(10)?NOT?NULL,??

(11)????`AUTHORITY`?varchar(10)?NOT?NULL,??

(12)????KEY?`FK_USERNAME_AUTHORITY`?(`USERNAME`),??

(13)????CONSTRAINT?`FK_USERNAME_AUTHORITY`?FOREIGN?KEY?(`USERNAME`)?REFERENCES?`users`?(`USERNAME`)?ON?DELETE?NO?ACTION?ON?UPDATE?NO?ACTION??

(14)??)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8?

?

?

?

用戶與角色是一對多的關系,一個用戶可以設置多個角色

?

?

?

?

?

?

?

(2)配置方式?–認證管理器配置方式

?

1.??<security:authentication-manager>??

2.??????<security:authentication-provider>??

3.??????????<security:password-encoder?ref="md5Encoder"?/>??

4.??????????<security:jdbc-user-service?data-source-ref="dataSource"?/>??

5.??????</security:authentication-provider>??

6.??</security:authentication-manager>?

?

這里有自定義的MD5加密器

?

<bean?id="md5Encoder"?class="org.ourpioneer.board.util.MD5Encoder"?/>?

?

2.自定義數(shù)據(jù)表:

?

(1)???????數(shù)據(jù)表

?

(2)????CREATE?TABLE?`b_user`?(??

(3)??????`ID`?int(11)?NOT?NULL?AUTO_INCREMENT,??

(4)??????`USERNAME`?varchar(20)?NOT?NULL,??

(5)??????`PASSWORD`?varchar(32)?NOT?NULL,??

(6)??????PRIMARY?KEY?(`ID`)??

(7)????)?ENGINE=InnoDB?AUTO_INCREMENT=4?DEFAULT?CHARSET=utf8??

(8)????CREATE?TABLE?`b_userrole`?(??

(9)??????`ID`?int(11)?NOT?NULL,??

(10)????`USERID`?int(11)?NOT?NULL,??

(11)????`ROLE`?varchar(15)?NOT?NULL,??

(12)????PRIMARY?KEY?(`ID`),??

(13)????KEY?`FK_USERID_USERROLE`?(`USERID`),??

(14)????CONSTRAINT?`FK_USERID_USERROLE`?FOREIGN?KEY?(`USERID`)?REFERENCES?`b_user`?(`ID`)?ON?DELETE?NO?ACTION?ON?UPDATE?NO?ACTION??

(15)??)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8?

?

?

?

(2)配置方式:

?

由于表名,字段名和結構都和Security框架默認的不匹配,只好通過SQL語句來讓Security框架識別了:

?

1.??<security:authentication-manager>??

2.??????<security:authentication-provider>??

3.??????????<security:password-encoder?ref="md5Encoder"?/>??

4.??????????<security:jdbc-user-service??

5.??????????????data-source-ref="dataSource"??

6.??????????????users-by-username-query="select?USERNAME,PASSWORD,'true'?as?ENABLED?from?b_user?where?USERNAME=?"??

7.??????????????authorities-by-username-query="select?u.USERNAME,ur.ROLE?as?AUTHORITIES?from?b_user?u,b_userrole?ur?where?u.USERNAME=??and?u.ID=ur.USERID"?/>??

8.??????</security:authentication-provider>??

9.??</security:authentication-manager>??

?

?

?

注:user實際上是單個字段,用戶名username,密碼password,用戶是否禁用(true/false)。此處true/false沒有從數(shù)據(jù)庫中提取,直接寫為ENABLE,(DISABLE表示false)。

?

3.基于proptetis屬性文件的配置方式

?

(1)屬性文件格式:/WEB-INF/user.properties

?

1.??admin=123,ROLE_ADMIN,ROLE_USER??

2.??user1=123,ROLE_USER??

3.??user2=123,enabled,ROLE_USER??

?

這里面名/值對的形式排列的,值的字段比較多。admin/user1是用戶名,不用多說,等號后面第一位是密碼,這里沒有加密。第二位是是否禁用狀態(tài),這是可選的,默認是enabled,第三位以后就是用戶所擁有的角色了,這么使用和前面的效果也是相同的。

?

?

?

(2)配置方式—驗證器

?

1.??<security:authentication-manager>??

2.??????<security:authentication-provider>??

3.??????????<security:user-service?properties="/WEB-INF/users.properties"/>??

4.??????</security:authentication-provider>??

5.??</security:authentication-manager>?

?

三、訪問控制

?

訪問控制是Security框架的另一大特性,可以對其進行自定義的擴展,設計符合我們業(yè)務邏輯的控制。這比URL攔截又深入了一步,可以過濾的東西又多了。

?

設計到訪問控制,要引入一個概念,誰來決定能否訪問,從而進行控制。Security框架中的訪問控制管理有三種方案:至少有一個同意訪問全部同意訪問全部棄權或都同意訪問(也就是沒有拒絕的)。如何同意?投票產生!Security框架一個可配置的元素就出來了,那就是投票器了。和現(xiàn)實的投票一樣,分同意,反對和棄權三類。

?

下面我們應用第一類訪問控制管理:至少有一個投票器同意訪問,在配置文件中這么來設置:

?

1.??<bean?id="accessDecisionManager"??

2.??????class="org.springframework.security.access.vote.AffirmativeBased">??

3.??????<property?name="decisionVoters">??

4.??????????<list>??

5.??????????????<bean?class="org.springframework.security.access.vote.RoleVoter"?/>??

6.??????????????<bean?class="org.springframework.security.access.vote.AuthenticatedVoter"?/>??

7.??????????</list>??

8.??????</property>??

9.??</bean>??

?

?

?

先看看對控制器方法的安全訪問,這個配置相對簡單,在配置文件中,把安全配置文件和controller的聲明放在一起:?

?

1.??<context:component-scan?base-package="org.ourpioneer.board.web"?/>??

2.??<security:global-method-security??

3.??????????jsr250-annotations="enabled"?secured-annotations="enabled"?/>??

?

?

?

?

?

?

?

?

?

四、SpringSecurity與CAS集成

?

http://www.family168.com/tutorial/springsecurity3/html/cas.html

?

示例文件:下載

?

http://www.jarvana.com/jarvana/browse/org/springframework/security/

?

1.所需jar文件

?

Cas Client的jar包:

?

cas-client-core-3.1.10.jar

?

SpringSecurity的jar文件

?

spring-security-cas-client-3.0.5.RELEASE.jar

?

spring-security-config-3.0.5.RELEASE.jar

?

spring-security-core-3.0.5.RELEASE.jar

?

spring-security-web-3.0.5.RELEASE.jar

?

?

?

2.配置文件

?

(1)配置userService?讀取本地應用程序的角色權限信息

?

A.基于xml方式配置

?

?user-service?用戶的信息配置,本應用程序自身要有一個用戶列表,單點登錄結束后需要從本地應用中讀取角色信息?下面是基于xml的配置方式,實際應用中應該使用數(shù)據(jù)庫方式

?

????<security:user-service id="userService">

????<security:user name="lgj" password="sailor" authorities="ROLE_SUPERVISOR,ROLE_USER" />

????????<security:user name="rod" password="rod" authorities="ROLE_SUPERVISOR,ROLE_USER" />

????????<security:user name="dianne" password="dianne" authorities="ROLE_USER" />

????????<security:user name="scott" password="scott" authorities="ROLE_USER" />

????</security:user-service>

?

B.基于數(shù)據(jù)庫方式配置

?

?

?

????????<security:jdbc-user-service??id="userService"

????????????data-source-ref="dataSource"?

????????????users-by-username-query="select USERNAME,PASSWORD,'true' as ENABLED from b_user where USERNAME=?"?

????????????authorities-by-username-query="select u.USERNAME,ur.ROLE as AUTHORITIES from b_user u,b_userrole ur where u.USERNAME=? and u.ID=ur.USERID"?/>?

?

???

?

(2)完整xml文件

?

?

?

<?xml?version="1.0"?encoding="UTF-8"?>

?

<beans?xmlns="http://www.springframework.org/schema/beans"

????xmlns:security="http://www.springframework.org/schema/security"

????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

????xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

????????????????????????http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

????<!--?配置controller采用注解方式?-->

????<security:global-method-security

???????jsr250-annotations="enabled"?secured-annotations="enabled"

???????access-decision-manager-ref="accessDecisionManager"?/>

????<!—配置退出url,攔截器等信息,由于上方使用了注解方式,因此攔截器可省略?-->

????<security:http?entry-point-ref="casProcessingFilterEntryPoint">

????????<security:logout?logout-success-url="/cas-logout.jsp"/>

????????<security:custom-filter?ref="casAuthenticationFilter"?after="CAS_FILTER"/>

????</security:http>

?

????<security:authentication-manager?alias="authenticationManager">

????????<security:authentication-provider?ref="casAuthenticationProvider"/>

????</security:authentication-manager>

?

????<bean?id="casAuthenticationFilter"?class="org.springframework.security.cas.web.CasAuthenticationFilter">

????????<property?name="authenticationManager"?ref="authenticationManager"/>

????????<property?name="authenticationFailureHandler">

????????????<bean?class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">

????????????????<property?name="defaultFailureUrl"?value="/casfailed.jsp"/>

????????????</bean>

????????</property>

????????<property?name="authenticationSuccessHandler">

????????????<bean?class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">

????????????????<property?name="defaultTargetUrl"?value="/"/>

????????????</bean>

????????</property>

????????<property?name="proxyGrantingTicketStorage"?ref="proxyGrantingTicketStorage"?/>

????????<property?name="proxyReceptorUrl"?value="/secure/receptor"?/>

????</bean>

?

<bean?id="casProcessingFilterEntryPoint"?class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">

<!--?配置單點登錄的地址?-->

????????<property?name="loginUrl"?value="https://sso.qau.edu.cn/cas/login"/>

????????<property?name="serviceProperties"?ref="serviceProperties"/>

????</bean>

?

????<bean?id="casAuthenticationProvider"?class="org.springframework.security.cas.authentication.CasAuthenticationProvider">

????????<property?name="userDetailsService"?ref="userService"/>

????????<property?name="serviceProperties"?ref="serviceProperties"?/>

????????<property?name="ticketValidator">

????????????<bean?class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">

????????????????<constructor-arg?index="0"?value="https://sso.qau.edu.cn/cas"?/>

????????????????<property?name="proxyGrantingTicketStorage"?ref="proxyGrantingTicketStorage"?/>

<!--?配置本地應用的地址?-->

????????????????<property?name="proxyCallbackUrl"?value="http://210.44.48.15:8080/SpringMVCSpringJPA2CAS/secure/receptor"?/>

????????????</bean>

????????</property>

????????<property?name="key"?value="an_id_for_this_auth_provider_only"/>

????</bean>

?

????<bean?id="proxyGrantingTicketStorage"?class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl"?/>

?

????<bean?id="serviceProperties"?class="org.springframework.security.cas.ServiceProperties">

????????<property?name="service"?value="http://210.44.48.15:8080/SpringMVCSpringJPA2CAS/j_spring_cas_security_check"/>

????????<property?name="sendRenew"?value="false"/>

????</bean>

<!-- user-service?用戶的信息配置,本應用程序自身要有一個用戶列表,單點登錄結束后需要從本地應用中讀取角色信息

下面是基于xml的配置方式,實際應用中應該使用數(shù)據(jù)庫方式

????<security:user-service id="userService">

????<security:user name="lgj" password="sailor" authorities="ROLE_SUPERVISOR,ROLE_USER" />

????????<security:user name="rod" password="rod" authorities="ROLE_SUPERVISOR,ROLE_USER" />

????????<security:user name="dianne" password="dianne" authorities="ROLE_USER" />

????????<security:user name="scott" password="scott" authorities="ROLE_USER" />

????</security:user-service> -->

???

????????<security:jdbc-user-service??id="userService"

????????????data-source-ref="dataSource"?

????????????users-by-username-query="select USERNAME,PASSWORD,'true' as ENABLED from b_user where USERNAME=?"?

????????????authorities-by-username-query="select u.USERNAME,ur.ROLE as AUTHORITIES from b_user u,b_userrole ur where u.USERNAME=? and u.ID=ur.USERID"?/>?

???

????<!--?訪問控制,可以進行自定義的擴展?-->

????<bean?id="accessDecisionManager"

???????class="org.springframework.security.access.vote.AffirmativeBased">

???????<property?name="decisionVoters">

???????????<list>

??????????????<bean?class="org.springframework.security.access.vote.RoleVoter"?/>

??????????????<bean?class="org.springframework.security.access.vote.AuthenticatedVoter"?/>

??????????????<bean?class="cn.edu.qau.acl.IPAddressVoter"?/>

???????????</list>

???????</property>

????</bean>

</beans>

?

?

?

?

?

?

?

?

?

(3)web.xml配置退出系統(tǒng)的過濾器和偵聽器

?

?

?

<!--?單點登出過濾器,應放到最上方?-->

????<filter>

???????<filter-name>CAS Single Sign Out Filter</filter-name>

???????<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

</filter>

<filter-mapping>

???????<filter-name>CAS Single Sign Out Filter</filter-name>

???????<url-pattern>/*</url-pattern>

????</filter-mapping>

?

?

<listener>

????????<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

????</listener>

?

?

?

?

(4)配置單點登錄服務器的應用管理

?

?

?

3.訪問方法

?

(1)獲取principal對象

?

?

?

<p>Your principal object is....:?<%=?request.getUserPrincipal()?%></p>

?

(2)顯示用戶名

?

?

?

???????????Welcome!

?

???????????<security:authentication?property="name"?/> --顯示用戶名

?

???????</h2>

?

???????角色:<security:authentication?property="authorities"?var="authorities"?/>

?

???????<ul>

?

???????????<c:forEach?items="${authorities}"?var="authority">

?

??????????????<li>

?

??????????????????${authority.authority}

?

??????????????</li>

?

???????????</c:forEach>

?

???????</ul>

?

??????

?

或者:

?

<%

?

if?(request.getRemoteUser() !=?null) {

?

????out.println("<div class=\"authenticated\">");

?

????out.println("User: "?+ request.getRemoteUser());

?

????//Logout not yet implemented!

?

????//out.println("&nbsp;&nbsp;");

?

????//out.println("<a href=\"#\">LOGOUT</a>");

?

????out.println("</div>");

?

}?else?{

?

????out.println("Not logged in.");

?

}

?

%>

?

(3)角色判斷

?

<%if?(request.isUserInRole("ROLE_SUPERVISOR")) {?%>

?

????You are a supervisor! You can therefore see the?<a?href="extreme/index.jsp">extremely secure page</a>.<br><br>

?

<%?}?%>

?

(4)顯示錯誤信息

?

<font?color="red">

?

????Your CAS?credentials?were rejected.<br/><br/>

?

????Reason:?<%=?((AuthenticationException) session.getAttribute(AbstractAuthenticationProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage()?%>

?

</font>

?

(5)退出登錄

?

退出session登錄,此時還沒有注銷cas,重新刷新頁面還可以拿到cas認證信息,并且登錄成功:

?

<a?href="<c:url?value="/j_spring_security_logout"?/>">Logout System</a>

?

完全退出系統(tǒng),并推出cas:

?

<p><a?href="https://sso.qau.edu.cn/cas/logout">Logout of CAS</a></p>

?

?

?

(6)方法中調用認證信息

?

-------------------------------------------------------------以下來自------------------------------------------

?

http://www.family168.com/tutorial/springsecurity3/html/cas.html

?

?

?

security?的中文翻譯文檔

?

Chapter?21.?CAS認證

?

21.1.?概述

?

JA-SIG開發(fā)了一個企業(yè)級的單點登錄系統(tǒng),叫做CAS。?與其他項目不同,JA-SIG的中心認證服務是開源的,廣泛使用的,簡單理解的,不依賴平臺的,而且支持代理能力。?Spring Security完全支持CAS,提供一個簡單的整合方式,把使用Spring Security的單應用發(fā)布,轉換成使用企業(yè)級CAS服務器的多應用發(fā)布安全

?

你可以從http://www.ja-sig.org/cas/找到CAS的更多信息。?你還需要訪問這個網(wǎng)站下載CAS服務器文件。

?

21.2.?CAS是如何工作的

?

雖然CAS網(wǎng)站包含了CAS的架構文檔,我們這里還是說一下使用Spring Security環(huán)境的一般性概述,。?Spring Security 3.0支持CAS 3。?在寫文檔的時候,CAS服務器的版本是3.3。

?

你要在公司內部安裝CAS服務器。?CAS服務器就是一個WAR文件,所以安裝服務器沒有什么難的。?在WAR文件里,你需要自定義登錄和其他單點登錄展示給用戶的頁面。

?

發(fā)布CAS 3.3的時候,你也需要指定一個CAS的deployerConfigContext.xml里包含的AuthenticationHandler。?AuthenticationHandler有一個簡單的方法,返回布爾值,判斷給出的證書集合是否有效。?你的AuthenticationHandler實現(xiàn)會需要鏈接到后臺認證資源類型里,像是LDAP服務器或數(shù)據(jù)庫。?CAS自己也包含非常多AuthenticationHandler幫助實現(xiàn)這些。?在你下載發(fā)布服務器war文件的時候,它會把用戶名和密碼匹配的用戶成功驗證,這對測試很有用。

?

除了CAS服務器,其他關鍵角色當然是你企業(yè)發(fā)布的其他安全web應用。?這些web應用被叫做"services"。?這兒有兩種服務:標準服務和代理服務。?代理服務可以代表用戶,從其他服務中請求資源。?后面會進行更詳細的介紹。

?

21.3.?配置CAS客戶端

?

CAS的web應用端通過Spring Security使用起來很簡單。?我們假設你已經(jīng)知道Spring Security的基本用法,所以下面都沒有涉及這些。?我們會假設使用基于命名空間配置的方法,并且添加了CAS需要的bean。

?

你需要添加一個?ServiceProperties?bean,到你的application context里。?這表現(xiàn)你的CAS服務:

?

? <bean id="serviceProperties"??????? class="org.springframework.security.cas.ServiceProperties">??? <property name="service"??????? value="https://localhost:8443/cas-sample/j_spring_cas_security_check"/>??? <property name="sendRenew" value="false"/>? </bean>???

?

這里的service必須是一個由CasAuthenticationFilter監(jiān)控的URL。?這個sendRenew默認是false,但如果你的程序特別敏感就應該設置成true。?這個參數(shù)作用是,告訴CAS登錄服務,一個單點登錄沒有到達。?否則,用戶需要重新輸入他們的用戶名和密碼,來獲得訪問服務的權限。

?

下面配置的bean就是展開CAS認證的過程(假設你使用了命名空間配置):

?

<security:http entry-point-ref="casEntryPoint">?? ...?? <custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" /></security:http>?<bean id="casFilter"????? class="org.springframework.security.cas.web.CasAuthenticationFilter">? <property name="authenticationManager" ref="authenticationManager"/></bean>?<bean id="casEntryPoint"??? class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">? <property name="loginUrl" value="https://localhost:9443/cas/login"/>? <property name="serviceProperties" ref="serviceProperties"/></bean>????

?

應該使用?entry-point-ref選擇驅動認證的CasAuthenticationEntryPoint類。

?

CasAuthenticationFilter的屬性與?UsernamePasswordAuthenticationFilter非常相似(在基于表單登錄時用到)。

?

為了CAS的操作,ExceptionTranslationFilter必須有它的AuthenticationEntryPoint,這里設置成CasAuthenticationEntryPoint?bean。

?

CasAuthenticationEntryPoint?必須指向?ServiceProperties?bean?(上面討論過了),它為企業(yè)CAS登錄服務器提供URL。?這是用戶瀏覽器將被重定向的位置。

?

下一步,你需要添加一個CasAuthenticationProvider?和它的合作伙伴:

?

? <security:authentication-manager alias="authenticationManager">??? <security:authentication-provider ref="casAuthenticationProvider" />? </security:authentication-manager>?? <bean id="casAuthenticationProvider"????? class="org.springframework.security.cas.authentication.CasAuthenticationProvider">??? <property name="userDetailsService" ref="userService"/>??? <property name="serviceProperties" ref="serviceProperties" />??? <property name="ticketValidator">????? <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">??????? <constructor-arg index="0" value="https://localhost:9443/cas" />??????? </bean>??? </property>??? <property name="key" value="an_id_for_this_auth_provider_only"/>? </bean>?? <security:user-service id="userService">??? <security:user name="joe" password="joe" authorities="ROLE_USER" />??? ...? </security:user-service>?????

?

一旦通過了CAS的認證,CasAuthenticationProvider?使用一個?UserDetailsService實例,來加載用戶的認證信息。?這里我們展示一個簡單的基于內存的設置。

?

如果你翻回頭看一下"How CAS Works"那節(jié),這些beans都是從名字就可以看懂的。

?

?

?

五、角色繼承(待整理)

?

?

?

在Spring Security中,我們可以指定角色間的繼承關系,這樣可以重用角色權限,減少配置的代碼量,讓權限配置整體上顯得更清晰。

?

為了使用角色繼承功能,我們需要對原有的配置文件進行一些修改。

?

<authentication-provider user-service-ref="userDetailsServiceWrapper"/>?<beans:bean id="userDetailsServiceWrapper"??? class="org.springframework.security.userdetails.hierarchicalroles.UserDetailsServiceWrapper">??? <beans:property name="userDetailsService" ref="userDetailsService"/>??? <beans:property name="roleHierarchy">??????? <beans:bean class="org.springframework.security.userdetails.hierarchicalroles.RoleHierarchyImpl">??????????? <beans:property name="hierarchy" value="ROLE_ADMIN > ROLE_USER"/>??????? </beans:bean>??? </beans:property></beans:bean>?<user-service id="userDetailsService">??? <user name="admin" password="admin" authorities="ROLE_ADMIN" />??? <user name="user" password="user" authorities="ROLE_USER" /></user-service>???????

?

我們將原有的user-service單獨抽離出來,在userDetailsService的基礎上生成一個userDetailsServiceWrapper,這個wrapper的作用就是在原有的user-service的基礎上啟用角色繼承功能。

?

我們使用RoleHierarchyImpl為userDetailsServiceWrapper配置了角色繼承的策略,ROLE_ADMIN > ROLE_USER表示ROLE_ADMIN將繼承ROLE_USER所有用的所有角色,只要是允許ROLE_USER訪問的資源,ROLE_ADMIN也都有權限進行訪問。這樣我們在user-service中的配置就可以從ROLE_ADMIN,ROLE_USER簡化為ROLE_ADMIN了,而intercept-url中的配置也可以從ROLE_ADMIN,ROLE_USER改為ROLE_USER了。

?

如果希望配置更多繼承關系,可以使用換行進行分隔,比如:

?

<property name="hierarchy">??? <value>??????? ROLE_A > ROLE_B??????? ROLE_B > ROLE_AUTHENTICATED??????? ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED??? </value></property>???????

?

?

?

?

?

第?51?章?角色繼承

?

有兩種方式可以用來實現(xiàn)角色繼承,一種是使用UserDetailsServiceWrapper在讀取用戶信息時,使用角色繼承為用戶賦予全部的權限,另一種是使用RoleHierarchyVoter在判斷權限的時候,使用角色繼承為生成繼承的全部權限。

?

使用UserDetailsServiceWrapper的情況,加載用戶信息的同時用戶會獲得所有權限,所以使用Acl的情況也不會出問題。使用RoleHierarchyVoter的情況,因為只會在每次校驗權限時才會使用繼承獲得所有權限,所以使用Acl的時候就會出現(xiàn)缺少權限的情況。

?

51.1.?使用RoleHierarchyVoter

?

把RoleHierarchyVoter加入配置文件中的accessDecisionManager。

?

<bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">

?

????<property name="allowIfAllAbstainDecisions" value="false"/>

?

????<property name="decisionVoters">

?

????????<list>

?

????????????<ref bean="roleHierarchyVoter"/>

?

????????????<ref bean="authenticatedVoter"/>

?

????????</list>

?

????</property>

?

</bean>

?

?

?

<bean id="roleHierarchyVoter" class="org.springframework.security.vote.RoleHierarchyVoter">

?

????<constructor-arg ref="roleHierarchy"/>

?

</bean>

?

?

?

<bean id="authenticatedVoter" class="org.springframework.security.vote.AuthenticatedVoter"/>

?

?

?

<bean id="roleHierarchy" class="org.springframework.security.userdetails.hierarchicalroles.RoleHierarchyImpl">

?

????<property name="hierarchy" value="ROLE_ADMIN > ROLE_USER"/>

?

</bean>

?

???????

?

然后在http中引用這個accessDecisionManager即可。

?

<http auto-config='true' access-decision-manager-ref='accessDecisionManager'>

?

????<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />

?

????<intercept-url pattern="/**" access="ROLE_USER" />

?

</http>

?

???????

?

51.2.?使用數(shù)據(jù)庫實現(xiàn)RoleHierarchy

?

實現(xiàn)代碼來自http://jira.springframework.org/browse/SEC-1071。源代碼在http://forum.springsource.org/showthread.php?t=65515。

?

使用基于Dao的RoleHierarchy需要兩部設置。

?

第一是在數(shù)據(jù)庫中建立對應的表結構,并設置初始數(shù)據(jù),數(shù)據(jù)庫表結構如下所示:

?

CREATE MEMORY TABLE ROLE_HIERARCHIES(

?

????INCLUDINGROLE VARCHAR(50),

?

????INCLUDEDROLE VARCHAR(50)

?

);

?

???????

?

includingrole表示繼承了其他角色的角色。includedrole表示被繼承的角色。如果我們希望設置ROLE_ADMIN繼承ROLE_USER,只需要進行如下設置。

?

INSERT INTO ROLE_HIERARCHIES(INCLUDINGROLE,INCLUDEDROLE) VALUES('ROLE_ADMIN','ROLE_USER')

?

???????

?

這樣RoleHierarchyEntryDaoJdbc會讀取數(shù)據(jù)庫中的數(shù)據(jù),將其組裝成ROLE_ADMIN > ROLE_USER格式,再交給RoleHierarchyImpl進行分析,最終用于RoleHierarchyVoter完成角色繼承的判斷。

?

下面修改配置文件,將daoRoleHierarchy的bean設置到配置文件中。

?

<bean id="roleHierarchyVoter" class="org.springframework.security.vote.RoleHierarchyVoter">

?

????<constructor-arg ref="daoRoleHierarchy"/>

?

</bean>

?

?

?

<bean id="daoRoleHierarchy"

?

????class="org.springframework.security.userdetails.hierarchicalroles.RoleHierarchyImplDaoAware">

?

????<property name="_roleHierarchyEntryDao" ref="roleHierarchyEntryDaoJdbc"/>

?

</bean>

?

?

?

<bean id="roleHierarchyEntryDaoJdbc"

?

????class="org.springframework.security.userdetails.hierarchicalroles.RoleHierarchyEntryDaoJdbc">

?

????<property name="dataSource" ref="dataSource"/>

?

</bean>

?

???????

?

這樣就完成了使用數(shù)據(jù)庫保存角色繼承信息的功能。

?

?

?

?

?

六、角色分組功能(待整理)

?

?

?

使用用戶組

?

Spring Security提供了用戶組機制,可以將多個用戶歸納在一個組中,進行統(tǒng)一授權。下面我們來研究一下如何在數(shù)據(jù)庫中使用用戶組保存用戶的權限信息。

?

44.1.?數(shù)據(jù)庫結構

?

在原數(shù)據(jù)庫的基礎上添加用戶組所需的三張表:

?

create table groups (??? id bigint generated by default as identity(start with 0) primary key,??? group_name varchar_ignorecase(50) not null);?create table group_authorities (??? group_id bigint not null,??? authority varchar(50) not null,??? constraint fk_group_authorities_group foreign key(group_id) references groups(id));?create table group_members (??? id bigint generated by default as identity(start with 0) primary key,??? username varchar(50) not null,??? group_id bigint not null,??? constraint fk_group_members_group foreign key(group_id) references groups(id));???????

?

ER圖如下所示:

?

?

?

?44.1.?用戶組ER

?

?

?

下面開始初始化數(shù)據(jù):

?

insert into users(username,password,enabled) values('admin','admin',true);insert into users(username,password,enabled) values('user','user',true);?insert into groups(id,group_name) values(1,'admin');insert into groups(id,group_name) values(2,'user');?insert into group_authorities(group_id,authority) values(1,'ROLE_ADMIN');insert into group_authorities(group_id,authority) values(2,'ROLE_USER');?insert into group_members(id,username,group_id) values(1,'admin',1);insert into group_members(id,username,group_id) values(2,'admin',2);insert into group_members(id,username,group_id) values(3,'user',2);???????

?

?

創(chuàng)建兩個用戶admin和user。

?

創(chuàng)建兩個組admin和user。

?

為用戶組授權,讓admin組中的所有用戶都擁有ROLE_ADMIN權限,user組中的所有用戶都擁有ROLE_USER權限。

?

admin用戶加入admin和user兩個用戶組,將user用戶加入user用戶組。

?

44.2.?修改配置文件

?

為jdbc-user-service添加一個參數(shù)就可以打開用戶組功能。

?

<authentication-provider>??? <jdbc-user-service data-source-ref="dataSource"??????? group-authorities-by-username-query="??????????? SELECT g.id, g.group_name, ga.authority????????????? FROM groups g, group_members gm, group_authorities ga???????????? WHERE gm.username = ??????????????? AND g.id = ga.group_id?????????????? AND g.id = gm.group_id"/></authentication-provider>???????

?

這樣系統(tǒng)就會使用這條sql語句從用戶組表中查詢用戶擁有的權限。

?

之后可以啟動實例ch212,使用admin和user用戶測試授權情況。

?

?

?

?

?

七、ACL訪問控制列表(不同的人只能看到自己的信息)

?

http://www.family168.com/oa/springsecurity/html/ch301-acl.html

?

?

?

?

?

八、RESTful風格權限控制

?

RESTful是蠻流行的一種web資源訪問方式,它最大限度利用了http協(xié)議的功能表達資源請求的內涵。

?

  • GET /app/messages:表示獲得所有Message的信息。

?

  • GET /app/messages/1:表示獲得id=1的Message的信息。

?

  • POST /app/messages:表示創(chuàng)建一條Message信息。

?

  • PUT /app/messages/1:表示更新id=1的Message的信息。

?

  • DELETE /app/messages/1:表示刪除id=1的Message的信息。

?

從上面的例子中可以看出來,我們只用了/app/messages和/app/messages/*兩類URL,就表示了Message的CRUD所有操作。這時如果我們希望對這些操作進行權限控制,就不能僅僅根據(jù)URL地址來判斷了,而是需要限制http請求的method參數(shù)。

?

下面我們對這些操作做出限制,只有ROLE_ADMIN才能添加,更新,刪除Message,ROLE_USER只能查看Message的信息。

?

<http auto-config='true'>??? <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />??? <intercept-url pattern="/app/messages" access="ROLE_ADMIN" method="POST" />??? <intercept-url pattern="/app/messages/*" access="ROLE_ADMIN" method="PUT" />??? <intercept-url pattern="/app/messages/*" access="ROLE_ADMIN" method="DELETE" />??? <intercept-url pattern="/**" access="ROLE_USER" /></http>???????

?

在intercept-url中使用method指定對應的http請求method參數(shù)就可以限制REST下定義的不同功能請求了,可以每次只能定義一個method,如果支持method="PUT,DELETE"這種形式的配置就更方便了。

?

實例參考x05。

?

?

?

【七】開發(fā)配置規(guī)范:

?

?

?

?

?

1.配置文件命名與位置

?

?

?

2.數(shù)據(jù)庫名

?

3.數(shù)據(jù)表名

?

?

?

4.類名

?

5.urls規(guī)劃

?

/模塊名/程序名/系列參數(shù)

?

?

?

?

?

6.文件名

總結

以上是生活随笔為你收集整理的Spring mvc 3.0 入门及应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲视频电影在线 | 国产日韩欧美在线影视 | 国产精品久久电影观看 | 成人av免费网站 | 一区二区三区免费在线播放 | 狠狠黄| 亚洲精品美女久久久久 | 亚洲1区在线| 国产经典三级 | 免费在线91 | 久久精品站 | 久久激情视频免费观看 | av在线8 | 亚洲 欧美 国产 va在线影院 | 五月婷香 | 精品一区二区三区四区在线 | 中文字幕第 | 久久国产精品免费 | 国产护士hd高朝护士1 | 一本一本久久a久久精品综合 | 成年人黄色在线观看 | 精品国产一区二区三区男人吃奶 | 国产美女免费观看 | 欧美精品久久久久性色 | 日本久久久久久 | 亚洲国产精品第一区二区 | 最新国产精品亚洲 | 91在线视频观看免费 | 成人一区在线观看 | 在线欧美小视频 | 亚洲精品视频观看 | 久久精品99视频 | 天堂在线视频免费观看 | 91香蕉国产 | 国产一区二区高清视频 | 成人精品福利 | 免费视频黄色 | 天堂av在线免费 | 黄色软件在线观看 | 久久er99热精品一区二区 | 五月婷婷在线视频观看 | 国产黄色观看 | 日韩免费电影一区二区 | 亚洲国产成人精品久久 | 国产精品21区| 亚洲国产精品电影 | 日韩精品一区二区三区电影 | 色多多在线观看 | 亚洲视频第一页 | 色噜噜噜噜 | 久久神马影院 | 丁香五月亚洲综合在线 | 免费福利在线观看 | 亚洲狠狠操 | 天天操人人要 | 在线免费观看视频 | 久久久香蕉视频 | 亚洲电影成人 | 丁香在线视频 | 岛国大片免费视频 | 99久久精品国 | 在线观看视频一区二区三区 | 国内免费的中文字幕 | 97爱爱爱 | 日日干日日 | 欧美另类一二三四区 | 成人免费视频视频在线观看 免费 | 午夜精品99久久免费 | 国内精品久久久久影院日本资源 | 日韩有码网站 | 97综合视频 | 91热这里只有精品 | 人人超在线公开视频 | 国产成人av电影在线 | 91视频-88av| 亚洲视频大全 | 日韩v在线 | 欧美亚洲xxx | 久久精品高清视频 | 亚洲成人免费在线 | 免费美女久久99 | 成人在线黄色电影 | 九九九视频在线 | 成人免费一区二区三区在线观看 | 婷婷丁香五 | 亚洲欧美乱综合图片区小说区 | 国产在线黄 | 久碰视频在线观看 | 在线精品视频免费播放 | 亚洲激情影院 | 中文字幕日韩一区二区三区不卡 | 最新日韩视频在线观看 | 中文一区在线 | 国产清纯在线 | 亚洲精品女人久久久 | 99精品免费| 亚洲久草网 | 欧美色综合久久 | 91正在播放 | 天天天色 | 成人羞羞视频在线观看免费 | av福利在线 | 国产精品九九久久99视频 | 九九热久久免费视频 | 午夜久久久久久久久久影院 | 99视频一区| 人人草在线视频 | 97操操操 | www.久草视频 | 99久久一区 | 国产色久| 亚洲精品乱码久久久久久按摩 | 中文字幕视频观看 | 久久精品国产99国产 | 精品国产免费一区二区三区五区 | 国产精品国产三级国产aⅴ入口 | 成人免费在线播放 | 日韩免费小视频 | 97视频人人 | 丁香五月亚洲综合在线 | 少妇bbw搡bbbb搡bbb | 午夜精品久久一牛影视 | 久草在线在线精品观看 | 最新免费av在线 | 欧美坐爱视频 | 不卡的av | 麻豆国产视频 | av短片在线观看 | 免费看一级特黄a大片 | 天天操·夜夜操 | 永久免费的av电影 | 国产日韩中文字幕 | 91高清免费看 | 91视频啊啊啊 | 性日韩欧美在线视频 | 天天干天天操av | 97在线观 | 日韩精品一区二区三区免费观看视频 | 日韩一级黄色片 | 国产黄免费 | 午夜性盈盈 | www91在线观看 | www.狠狠操.com| 中文字幕一区二区三区乱码在线 | www.狠狠插.com | 精品视频一区在线观看 | 久久久久区 | 在线国产黄色 | 一级一片免费观看 | 五月婷在线播放 | 在线观看国产一区二区 | 激情欧美一区二区三区免费看 | 久久手机免费视频 | 激情综合交 | 国产男女爽爽爽免费视频 | 日日夜夜骑 | 欧美专区国产专区 | 一区二区三区在线看 | 亚洲综合小说 | 91色在线观看视频 | 欧美精品生活片 | 亚洲最大成人免费网站 | 国产精品门事件 | 91精品久久久久久久久久久久久 | 日韩精品中文字幕在线播放 | 国产高清不卡在线 | 久久精品电影 | 日日干日日色 | 国产中文字幕视频在线 | 国产精品 欧美 日韩 | 91精品国产99久久久久久久 | 久久狠狠婷婷 | www.一区二区三区 | 日日天天av | 爱干视频 | 91传媒视频在线观看 | 少妇bbw撒尿 | 精品国产一区二区三区日日嗨 | 成人黄色在线电影 | 成人免费网视频 | 91精品国产一区二区三区 | www.国产在线视频 | 国产免费又爽又刺激在线观看 | 亚洲免费av一区二区 | 久久久亚洲麻豆日韩精品一区三区 | 亚洲一区二区黄色 | 天天摸天天操天天舔 | 三上悠亚一区二区在线观看 | 国产日产精品一区二区三区四区的观看方式 | 日本中文字幕久久 | 国产精品视频999 | 手机av电影在线观看 | 91麻豆视频| 亚洲日日日 | av成人在线看 | 黄av免费在线观看 | 国产品久精国精产拍 | 日韩av电影免费在线观看 | 日韩欧美精选 | 五月婷婷六月丁香 | 91热视频在线观看 | 欧美日韩在线观看视频 | 免费看亚洲毛片 | 久久99在线观看 | 成年人电影毛片 | 日本免费久久高清视频 | 日韩精品一区二区三区中文字幕 | 九九在线国产视频 | 亚洲午夜久久久久久久久 | 91av影视 | 日本精品久久久久中文字幕 | 国产馆在线播放 | 亚洲精品国产成人av在线 | 免费观看性生交大片3 | 国产一区二区三区在线免费观看 | 日韩免费 | 99精品一级欧美片免费播放 | 日韩在线一二三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 蜜臀一区二区三区精品免费视频 | 狠狠亚洲 | 欧美一级专区免费大片 | 99在线免费观看视频 | 国产精品久久久久免费观看 | 激情视频在线观看网址 | 国产精品 中文字幕 亚洲 欧美 | 精品一区av | 精品麻豆| 日韩在线视频一区 | 久久爱导航 | 波多野结衣动态图 | 色婷婷久久久综合中文字幕 | 亚洲首页 | 在线观看国产中文字幕 | 亚洲一区二区高潮无套美女 | 色天天综合网 | 国产精品久久久久久电影 | 狠狠亚洲 | 亚洲日本一区二区在线 | 激情五月六月婷婷 | 在线观看免费中文字幕 | 亚洲天堂网在线播放 | 中文字幕一区二区在线观看 | 亚洲精品中文字幕在线 | 国产视频二区三区 | 日韩有码专区 | 天天插天天爽 | 在线观看av国产 | 九九色在线观看 | 在线播放国产一区二区三区 | 青青河边草观看完整版高清 | 在线中文字幕播放 | 93久久精品日日躁夜夜躁欧美 | 国产成人av电影 | 天天射天天搞 | 韩日精品中文字幕 | 黄色国产成人 | 日韩高清不卡一区二区三区 | 日本黄色免费电影网站 | 色九九在线 | 玖玖在线精品 | 丁香高清视频在线看看 | 国产黄色免费看 | 天天操天天色天天射 | 日韩欧美高清视频在线观看 | 精品美女在线视频 | 成人亚洲欧美 | 日韩视频二区 | 国产精品岛国久久久久久久久红粉 | 四虎在线影视 | 欧美日韩高清在线 | aaaaaa毛片| 亚洲一区av | 91久久久久久国产精品 | 日韩一区二区三区观看 | 婷婷av电影 | 综合影视| 久久精品国产亚洲精品2020 | 超碰免费观看 | 日韩av影片在线观看 | 97国产情侣爱久久免费观看 | 国产福利一区二区在线 | 亚洲日本中文字幕在线观看 | 99精品免费在线 | www日韩视频 | 婷婷综合影院 | 亚洲国产精品va在线看黑人 | 午夜av免费在线观看 | av一级片网站| 日本夜夜草视频网站 | 国产伦理久久 | 999成人网 | 正在播放一区二区 | 久精品视频免费观看2 | 免费无遮挡动漫网站 | 亚洲精品九九 | 亚洲精品一区二区三区四区高清 | 精品久久美女 | 国产一线二线三线性视频 | 国产日韩欧美在线观看 | 国产97色在线 | 天天做天天爱天天爽综合网 | 激情视频二区 | 激情综合啪啪 | 五月激情亚洲 | 伊人成人精品 | 黄色com| 91黄色免费网站 | 欧美日韩在线视频免费 | 日本精品视频在线观看 | 毛片网站在线观看 | 天天伊人网 | 成人羞羞免费 | 狠狠狠色丁香婷婷综合久久五月 | 美女视频一区 | 久久免费的精品国产v∧ | 亚洲人在线7777777精品 | 亚洲精品tv久久久久久久久久 | 久久久久看片 | 91福利试看 | 综合网久久 | 婷婷 综合 色 | 久久精品视频在线观看免费 | 看v片| 中文字幕在线观看第一页 | 久久调教视频 | 天天色天天射综合网 | 91久色蝌蚪 | 久久综合毛片 | 97免费 | 久久 一区| 天天激情综合 | 天天亚洲| 国产精品欧美久久久久三级 | 在线精品一区二区 | 永久免费精品视频 | 97精品国产91久久久久久久 | 高清视频一区二区三区 | 99色视频 | 国产精品igao视频网网址 | 缴情综合网五月天 | 最新真实国产在线视频 | 国产视频午夜 | 日本丰满少妇免费一区 | 黄av免费| 日韩免费二区 | 深夜免费福利 | 丁香婷婷色综合亚洲电影 | 久久国产精品99精国产 | 日韩欧美区 | 精品国产日本 | 久草网在线视频 | 黄色av免费看 | 免费影视大全推荐 | 亚洲第一中文字幕 | 欧美日韩一区二区免费在线观看 | 日韩免费在线视频观看 | 91av在| 六月色丁香 | 爱爱av网站| 国产精品久久久一区二区三区网站 | 天天综合91 | 欧美激情第一页xxx 午夜性福利 | 成人在线一区二区 | 日日夜日日干 | 国产又粗又猛又黄视频 | 午夜精品视频在线 | www.888.av | 美女一区网站 | 久久精品8 | 成人精品影视 | 欧美日韩国产高清视频 | 国产精品乱码一区二三区 | 精品国产一二三四区 | 免费观看完整版无人区 | 成人午夜免费剧场 | 久久黄色免费 | 婷婷 综合 色 | 日本韩国中文字幕 | 日韩中文字幕视频在线 | 国产精品99久久久精品 | 国产精品女教师 | 久久高清国产 | 五月天婷亚洲天综合网鲁鲁鲁 | 91在线一区二区 | 中文字幕日韩在线播放 | 亚洲精品国产精品久久99热 | 一级性av| av在线永久免费观看 | 亚洲国产午夜视频 | 国产高清免费在线观看 | 国产精品一区二区久久精品 | 亚洲天堂网在线视频 | 亚洲成人午夜在线 | 在线免费观看国产精品 | 婷婷在线色 | 欧美日韩在线免费视频 | 欧美99热 | 又粗又长又大又爽又黄少妇毛片 | 久久精品系列 | 天天色欧美| 精品在线视频一区二区三区 | 99人成在线观看视频 | 久久香蕉电影网 | 99这里有精品 | 日本不卡123区 | 免费观看黄| 成年人黄色免费看 | 国产一区二区在线免费观看 | 欧美日韩高清免费 | 欧美日韩国产免费视频 | 亚洲精品国产综合99久久夜夜嗨 | 欧美婷婷综合 | 成人在线视频一区 | 丁香激情综合久久伊人久久 | 久久国产品 | 五月婷影院 | 日韩国产精品久久 | 最新免费av在线 | 欧美成年网站 | www黄com| 久久精品国产精品亚洲 | 久久中文字幕导航 | 久久天天躁狠狠躁夜夜不卡公司 | 国产特级毛片aaaaaaa高清 | 天天操夜| 婷婷丁香狠狠爱 | 天天操天天干天天操天天干 | 五月色综合 | 四虎精品成人免费网站 | 91在线www| 婷婷激情站 | 国产手机av在线 | 九九视频这里只有精品 | 免费看片亚洲 | 日韩在线播放av | 久久久久亚洲国产 | 国产精品嫩草影院9 | 欧美a在线免费观看 | 夜夜躁狠狠躁日日躁视频黑人 | 精品久久一区二区 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品va | av一级二级| 91网站在线视频 | 蜜臀aⅴ国产精品久久久国产 | 成人a视频片观看免费 | 国内精品福利视频 | 日韩在线观看网站 | 日韩中文字幕a | 99精品免费在线 | 在线观看一区二区视频 | 在线色资源 | 日韩美在线观看 | 日韩精品一区电影 | 中文字幕乱在线伦视频中文字幕乱码在线 | 成人三级黄色 | 日韩精品久久久久久久电影99爱 | 日韩在线在线 | 亚洲国产欧洲综合997久久, | 六月婷婷网 | 天天操操操操操 | 免费看久久 | 久久婷婷久久 | 99久久婷婷国产一区二区三区 | 日韩视频免费播放 | 毛片在线播放网址 | 国产精品国产三级国产aⅴ9色 | 国产日韩欧美视频在线观看 | 欧美巨乳网 | 亚洲精品一区二区三区高潮 | 深爱五月激情网 | 亚洲精品久久在线 | 国产欧美高清 | 精品美女久久 | 日本久久精品视频 | 青青草在久久免费久久免费 | 黄色免费视频在线观看 | 亚洲精品视频在线观看免费 | 欧美色图p | 欧美日韩激情网 | 久久99精品久久久久久三级 | 91中文字幕在线 | 国产精品精品久久久久久 | 97精品国产97久久久久久 | 91视频 - x99av | 国产精品国内免费一区二区三区 | 天天操操操操操 | 国产精品视屏 | 免费看片色 | 欧美资源 | 免费在线观看日韩欧美 | 狠狠88综合久久久久综合网 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 精品国产一区二区三区久久久 | 久久精品中文字幕少妇 | 欧美极度另类 | 中文在线√天堂 | 国产精品成人a免费观看 | 国产精品尤物视频 | 久久99精品国产一区二区三区 | 欧美国产不卡 | 国产99久久久久久免费看 | 日韩理论电影在线 | 亚洲精品久久久久中文字幕m男 | 欧美中文字幕第一页 | 日韩av电影免费在线观看 | 国产精品爽爽爽 | 免费黄色在线播放 | 国产三级香港三韩国三级 | 欧美一级裸体视频 | 久久久18 | 中文字幕在线免费观看视频 | 婷婷激情在线观看 | 中日韩三级视频 | 国产精品久久久久久久婷婷 | 久久久精品影视 | 激情影音先锋 | 在线观看免费一级片 | 亚洲综合狠狠干 | 高清av在线免费观看 | 中文字幕视频网站 | 天天色天天上天天操 | 欧美亚洲成人免费 | 一区二区成人国产精品 | 成人午夜电影在线播放 | 手机在线小视频 | 国产精品麻豆三级一区视频 | 国产精品理论片 | 久久夜夜爽 | 人人插人人看 | 日韩中文字幕亚洲一区二区va在线 | 国产91aaa| 成人毛片网 | 免费不卡中文字幕视频 | 久久国产精品99精国产 | 伊人五月天 | 91精品婷婷国产综合久久蝌蚪 | 国产精品porn | 欧美日在线 | 欧美在线99 | 亚洲综合视频在线 | 超碰人人在线 | 色97在线 | 亚洲 欧美变态 另类 综合 | 日日爽夜夜操 | 日韩欧美在线一区 | 91完整版观看| 久色小说| 黄av免费在线观看 | 国产精品久久久久久高潮 | 日女人电影| 国产色视频123区 | 国产成人av | 免费av网站在线看 | 日本性xxx| www178ccom视频在线 | 成人在线视频免费观看 | 日日夜夜精品免费观看 | 美女视频是黄的免费观看 | 91视频免费 | 成人三级视频 | 91福利视频久久久久 | 国产精品福利视频 | 国产九九九精品视频 | 91刺激视频| 国产精品久久久久av福利动漫 | 摸bbb搡bbb搡bbbb| 色视频成人在线观看免 | 亚洲精品456在线播放第一页 | 黄www在线观看 | 免费a级观看 | 国产欧美最新羞羞视频在线观看 | 日韩剧| 国产精品久久久av | 久草热久草视频 | 国产情侣一区 | 欧美91成人网 | 狠狠干免费 | 色综合久久五月天 | 国产精品一区免费观看 | 香蕉久久国产 | 日本中文字幕观看 | 久久久精品一区二区 | 四虎永久免费网站 | 天天色.com | av网站免费看 | 日女人免费视频 | 国产一卡二卡在线 | 91精品1区2区| 欧美日韩国产一二三区 | 欧美作爱视频 | 久久人人爽人人片av | 亚洲精品一区二区三区新线路 | 国产精品久久久久久久久久久久久久 | 精品一区二区免费在线观看 | 久久在线播放 | 日韩二区三区在线 | 成人av网页 | 人人添人人澡人人澡人人人爽 | 97超碰超碰久久福利超碰 | 亚洲欧美日韩精品一区二区 | 九九久久久久久久久激情 | 欧美 激情 国产 91 在线 | 国产 欧美 日本 | 制服丝袜在线91 | 精品久久久久久一区二区里番 | 天天色天天骑天天射 | 九九免费在线看完整版 | 丁香五婷 | 在线观看国产日韩欧美 | 国产成人a亚洲精品v | 日韩三级.com | 玖玖国产精品视频 | 波多野结衣视频一区 | 成av人电影| 人人爽人人澡人人添人人人人 | 日韩午夜在线观看 | 久久久香蕉视频 | 亚洲第二色| 91av在线国产 | 丁香激情综合 | 久草视频在线观 | 久久久精品国产免费观看同学 | 一级黄色大片 | 亚洲精品在线看 | 国产精品免费观看视频 | 911免费视频 | 4p变态网欧美系列 | 黄色一级免费电影 | 91丨九色丨勾搭 | 日韩免费av在线 | 久久看视频 | 超碰97人人干 | 国产在线视频资源 | 91在线网址 | 久久精品国产精品亚洲精品 | 亚洲国产精品传媒在线观看 | 99这里都是精品 | 欧美日韩免费观看一区二区三区 | 黄色免费视频在线观看 | 亚洲激情精品 | 精品久久久久久久久久久久久久久久 | 免费观看黄色12片一级视频 | 日黄网站| 激情婷婷亚洲 | 国产美女黄网站免费 | 久久av在线 | 九九有精品 | 久久综合五月婷婷 | www久久九 | 高清美女视频 | 肉色欧美久久久久久久免费看 | 中文字幕亚洲欧美日韩2019 | 狠狠干天天操 | 国内精品视频在线播放 | 91免费高清观看 | 五月天激情综合 | 久久成熟 | 日韩av一区二区在线影视 | 91av短视频| 激情丁香在线 | 国产中文字幕一区二区三区 | 久久公开免费视频 | 久久夜色精品国产欧美乱 | 激情综合站 | 午夜视频播放 | 在线免费观看欧美日韩 | 国产91九色视频 | 91av蜜桃| 精品 激情 | 激情图片区 | 欧美a级片网站 | 黄色大片日本免费大片 | 精品成人网 | 亚洲欧洲精品在线 | 18女毛片| 91精品国产三级a在线观看 | 日日婷婷夜日日天干 | 中文亚洲欧美日韩 | 婷婷激情在线 | 白丝av免费观看 | 亚洲欧洲国产日韩精品 | 又大又硬又黄又爽视频在线观看 | 九九在线播放 | 激情五月色播五月 | 国产视频观看 | 中文字幕在线观看91 | 欧美a√大片| 综合网中文字幕 | 久久人人97超碰国产公开结果 | 国产h在线播放 | 国产黄视频在线观看 | 麻豆免费在线播放 | 午夜丁香网 | 国产精品大全 | 亚洲精选视频免费看 | 一本色道久久综合亚洲二区三区 | 在线观看色网 | 亚洲成人午夜av | av在线a| 久久久久久久久久久久久久免费看 | 视频一区久久 | 欧美性色黄大片在线观看 | 久操中文字幕在线观看 | 国产美女主播精品一区二区三区 | 五月天丁香亚洲 | 色在线中文字幕 | 99这里只有| 91成人免费看片 | 久视频在线播放 | 在线观看国产高清视频 | 在线视频 91 | 精品日韩在线一区 | 国产精品黄色 | 日日日日日| 亚洲 欧美 另类人妖 | 免费在线观看91 | 欧美最猛性xxxxx(亚洲精品) | 成人99免费视频 | 一区 二区 精品 | 色婷婷av国产精品 | 黄色a一级视频 | 97国产精品久久 | 91传媒在线| 夜色资源站wwwcom | 国产精品久久久久久超碰 | 操一草 | 国产精品黄色在线观看 | 日韩av电影中文字幕 | 美女久久久久久久久久 | 天天综合日 | 欧美激情片在线观看 | www.97视频 | 久久精品5 | 麻豆视频成人 | 日日草av | 热re99久久精品国产99热 | 偷拍区另类综合在线 | 久草在线资源免费 | 96视频免费在线观看 | 天海冀一区二区三区 | 一区二区视频在线看 | 亚洲无线视频 | 欧美日韩国产一区二区在线观看 | 黄色片视频免费 | 中文字幕频道 | 菠萝菠萝在线精品视频 | 综合久久网站 | 天天做天天爱天天综合网 | 97超在线视频 | 久久亚洲综合国产精品99麻豆的功能介绍 | 九九天堂| 国产成人av免费在线观看 | 成人在线免费看 | 午夜免费视频网站 | 一本色道久久综合亚洲二区三区 | 婷婷色在线资源 | 国产亚洲视频在线免费观看 | 27xxoo无遮挡动态视频 | 狠狠撸电影 | 最新日韩在线观看 | 国产99久久久国产 | 久久美女电影 | 91av在线免费 | 91专区在线观看 | 久久精品黄色 | 伊人干综合 | 免费午夜网站 | 亚洲 中文 欧美 日韩vr 在线 | 欧美日韩视频在线观看免费 | 欧美成人一区二区 | 1024手机基地在线观看 | 亚洲成人av影片 | 成人久久久精品国产乱码一区二区 | 免费观看视频的网站 | 免费观看国产视频 | 黄色一区二区在线观看 | 99精品免费在线观看 | 五月激情片 | 中文字幕在线观看视频一区 | 在线视频 影院 | 久久精精品视频 | 九九视频免费在线观看 | 天堂av在线 | 黄色av网站在线观看 | 在线观看免费色 | 韩国在线一区二区 | 国产精品美女久久久久久 | 日韩欧美精品一区二区三区经典 | 久久精品99久久久久久 | 极品美女被弄高潮视频网站 | 久久久这里有精品 | 激情久久综合 | 国产精品美女久久久免费 | 天天射,天天干 | 日韩欧美一区二区三区视频 | 天堂资源在线观看视频 | 在线а√天堂中文官网 | 在线观看日韩免费视频 | 亚洲国产精品女人久久久 | 国内视频在线 | 欧美久久久久久久久久久久久 | 国产黄av | 国产香蕉视频在线播放 | 玖玖在线播放 | 九九在线国产视频 | 成人在线免费观看视视频 | 99久久精品免费看国产麻豆 | av片子在线观看 | 亚洲色图美腿丝袜 | 日韩久久久久久久久久 | 久久久久激情视频 | 九草视频在线观看 | 欧美成人tv | 久久国产精品99久久人人澡 | 蜜桃av人人夜夜澡人人爽 | 91传媒在线观看 | 亚洲精品日韩一区二区电影 | 亚洲精品色视频 | 精品美女在线视频 | 激情亚洲综合在线 | 天天综合久久综合 | 91麻豆精品国产91久久久久久 | 中文字幕美女免费在线 | 亚洲japanese制服美女 | 国产视频1 | 91av在线视频免费观看 | 亚洲在线观看av | 麻豆视频成人 | 天天干,天天射,天天操,天天摸 | 中文字幕视频在线播放 | 国产99亚洲 | 美女在线国产 | 尤物九九久久国产精品的分类 | 超碰在线人 | 天天干天天干天天操 | 国产欧美中文字幕 | 久久免费视频6 | 国产精品成人一区二区三区吃奶 | 欧美性久久久 | 波多野结衣在线播放一区 | 成人在线视频在线观看 | 五月婷在线观看 | 99国产精品免费网站 | 又黄又爽又无遮挡免费的网站 | 又爽又黄在线观看 | 中文久久精品 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 在线精品在线 | 在线观看视频免费大全 | 久草免费新视频 | 狠狠干狠狠艹 | 香蕉色综合 | 密桃av在线 | 国产高h视频 | 亚洲精品女人久久久 | 欧美另类z0zx | 亚洲一级片av | 中文字幕的 | 色综合夜色一区 | 久久久免费av | 欧美日韩精品影院 | 91资源在线免费观看 | 超碰资源在线 | 精品一区二区久久久久久久网站 | 亚洲精品综合在线 | 亚洲专区免费观看 | 亚洲国产色一区 | 国产精品久久久久久影院 | 999男人的天堂 | 精品亚洲成人 | 狠狠色丁香婷综合久久 | 狠狠成人 | 久久人人看 | 综合久久久 | 婷婷精品国产一区二区三区日韩 | 国产精品精品久久久久久 | 久久久久国产精品免费免费搜索 | 国产手机在线观看视频 | 国产麻豆视频在线观看 | 亚洲激情 在线 | 91黄色小网站 | 欧美久久99 | 国产又粗又猛又爽又黄的视频免费 | www久| 国产精品av在线免费观看 | 国产精品三级视频 | 黄色资源网站 | 国产日韩欧美在线观看 | 久久公开视频 | 亚洲免费在线观看视频 | 久久久一本精品99久久精品66 | 午夜黄色 | 免费看成人 | 欧美极品少妇xbxb性爽爽视频 | 亚洲人成免费网站 | 久久99国产精品久久 | 久久免费黄色网址 | 日韩一区在线免费观看 | 日韩免费二区 | 亚洲欧美视频在线播放 | 狠狠狠色丁香婷婷综合久久五月 | 色视频在线观看免费 | 免费看黄色毛片 | 韩国av永久免费 | 国产成人久久av免费高清密臂 | 九色91在线视频 | 操操日| 中文字幕一区三区 | 日韩av福利在线 | 久久国产精品99久久久久久丝袜 | 日韩高清在线一区二区三区 | 久久一级电影 | 在线观看国产一区二区 | 一级淫片在线观看 | 日本在线视频网址 | 日本久久精 | 一区二区在线不卡 | www.伊人色.com | 日韩欧美精品一区二区 | 久久影视一区 | 精品一二三四视频 | 99福利影院| 日韩激情小视频 | 久久99热这里只有精品国产 | 四虎影视国产精品免费久久 | 高清在线一区 | 国精产品满18岁在线 | 国产精品99在线播放 | 亚洲成av | 二区三区视频 | 在线观看亚洲视频 | 亚洲日本va午夜在线电影 | 高清av在线 | 手机看片中文字幕 | 亚洲精品乱码久久久久久蜜桃91 | 免费在线91 | www.狠狠操.com | 日日夜夜91 | 波多野结衣在线播放一区 | 在线播放第一页 | av成人免费在线看 | 亚洲天堂在线观看完整版 | 久草视频免费在线播放 | 免费看一级特黄a大片 | 亚洲电影成人 | 午夜狠狠干 | 九九热久久免费视频 | 国产精品毛片一区二区 | 天堂视频中文在线 | 欧美午夜精品久久久久久浪潮 | 一区二区高清在线 | 国产精品久久久久久久久久妇女 | 六月丁香社区 | 探花视频免费观看高清视频 | 十八岁以下禁止观看的1000个网站 | 国产专区在线看 | 久操视频在线观看 | 免费看黄色大全 | 日本中文字幕在线视频 | 色九色 | 99久热精品 | 一区 二区 精品 | 国产免费三级在线观看 | 精品国产色| 午夜美女视频 | 久久电影中文字幕视频 | 中文字幕视频免费观看 | www黄在线 | 国产探花视频在线播放 | 欧美综合在线观看 | 日本夜夜草视频网站 | 一级成人免费视频 | 国产精品美女免费 | 久久视频这里有精品 | 天堂av影院 | 在线综合色| 久久理论视频 | 最近久乱中文字幕 | 涩涩爱夜夜爱 | 国产精品美女久久久久久 | 日韩在线观看视频在线 | www免费 | 日韩在线一区二区免费 | 国产韩国精品一区二区三区 | 久久不见久久见免费影院 | 久久久久久国产精品999 | 在线视频一区二区 | 在线观看久久久久久 | 国内精品视频久久 | av免费网站在线观看 | 免费观看av | 精品一区二区av | 免费瑟瑟网站 | 国产一区二区三区 在线 | 综合婷婷 | 91网站在线视频 |