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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证

發(fā)布時間:2024/4/14 asp.net 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文:購物車Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端驗證

?

chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的購物車案例,非常精彩,這里這里記錄下對此項目的理解。


文章:
http://chsakell.com/2015/01/31/angularjs-feat-web-api/
http://chsakell.com/2015/03/07/angularjs-feat-web-api-enable-session-state/

?

源碼:
https://github.com/chsakell/webapiangularjssecurity

?

?

本系列共三篇,本篇是第三篇。


購物車Demo,前端使用AngularJS,后端使用ASP.NET Web API(1)--后端
購物車Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session
購物車Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端驗證

?

這里會涉及到三方面的內(nèi)容:

?

1、ASP.NET Identity & Entity Framework

● Identity User
● User Mnager

?

2、OWIN Middleware

● Authorization Server
● Bearer Auhentication

?

3、AngularJS

● Generate Tokens
● Creae authorized requests


1、ASP.NET Identity & Entity Framework

?

首先安裝Microsoft ASP.NET Identity EntityFramework。

?

添加一個有關(guān)用戶的領(lǐng)域模型,繼承IdentityUser。

?

public class AppStoreUser : IdentityUser {... }

?

配置用戶,繼承EntityTypeConfiguration<T>

?

public class AppStoreUserConfiguraiton : EntityTypeConfiguration<AppStoreUser> {public AppStoreUserConfiguration(){ToTable("Users");} }

?

然后讓上下文繼承Identity特有的上下文類。

?

public class StoreContext : IdentityDbContext<AppStoreUser> {public StoreContext() : base("StoreContext", thrwoIfVISchema: false){protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });modelBuilder.Configurations.Add(new AppStoreUserConfiguration());modelBuilder.Configurations.Add(new CategoryConfiguration());modelBuilder.Configurations.Add(new OrderConfiguration());} } }

?

繼承Identity的UserManager類:

?

public class AppStoreUserManager : UserManager<AppStoreUser> {public AppStoreUserManager(IUserStore<AppStoreUser> store) : base(store){} }

?

2、OWIN Middleware

?

在NuGet中輸入owin,確保已經(jīng)安裝如下組件:

?

Microsoft.Owin.Host.SystemWeb
Microsoft.Owin
Microsoft ASP.NET Web API 2.2 OWIN
Microsoft.Owin.Security
Microsoft.Owin.Security.OAth
Microsoft.Owin.Security.Cookies (optional)
Microsoft ASP.NET Identity Owin
OWIN

?

在項目根下創(chuàng)建Startup.cs部分類。

?

[assembly: OwinStartup(typeof(Store.Startup))] namespace Store {public partial class Startup{public void Configuration(IAppBuilder app){ConfigureStoreAuthentication(app);}} }

?

在App_Start中創(chuàng)建Startup.cs部分類。

?

//啟用OWIN的Bearer Token Authentication public partial class Startup {public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }public static string PublicClientId { get; private set; }public void ConfigureStoreAuthentication(IAppBuilder app){// User a single instance of StoreContext and AppStoreUserManager per request app.CreatePerOwinContext(StoreContext.Create);app.CreatePerOwinContext<AppStoreUserManager>(AppStoreUserManager.Create);// Configure the application for OAuth based flowPublicClientId = "self";OAuthOptions = new OAuthAuthorizationServerOptions{TokenEndpointPath = new PathString("/Token"),Provider = new ApplicationOAuthProvider(PublicClientId),AccessTokenExpireTimeSpan = TimeSpan.FromDays(10),AllowInsecureHttp = true};app.UseOAuthBearerTokens(OAuthOptions);} }

?

在Identity用戶管理類中添加如下代碼:

?

public class AppStoreUserManager : UserManager<AppStoreUser> {public AppStoreUserManager(IUserStore<AppStoreUser> store): base(store){}public static AppStoreUserManager Create(IdentityFactoryOptions<AppStoreUserManager> options, IOwinContext context){var manager = new AppStoreUserManager(new UserStore<AppStoreUser>(context.Get<StoreContext>()));// Configure validation logic for usernamesmanager.UserValidator = new UserValidator<AppStoreUser>(manager){AllowOnlyAlphanumericUserNames = false,RequireUniqueEmail = true};// Password Validationsmanager.PasswordValidator = new PasswordValidator{RequiredLength = 6,RequireNonLetterOrDigit = false,RequireDigit = false,RequireLowercase = true,RequireUppercase = true,};var dataProtectionProvider = options.DataProtectionProvider;if (dataProtectionProvider != null){manager.UserTokenProvider = new DataProtectorTokenProvider<AppStoreUser>(dataProtectionProvider.Create("ASP.NET Identity"));}return manager;}public async Task<ClaimsIdentity> GenerateUserIdentityAsync(AppStoreUser user, string authenticationType){var userIdentity = await CreateIdentityAsync(user, authenticationType);return userIdentity;} }

?

當(dāng)在API中需要獲取用戶的時候,就會調(diào)用以上的代碼,比如:

?

Request.GetOwinContext().GetUserManager<AppStoreUserManager>();

?

為了能夠使用OWIN的功能,還需要實現(xiàn)一個OAuthAuthorizationServerProvider。

?

public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider {private readonly string _publicClientId;public ApplicationOAuthProvider(string publicClientId){if (publicClientId == null){throw new ArgumentNullException("publicClientId");}_publicClientId = publicClientId;}public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context){var userManager = context.OwinContext.GetUserManager<AppStoreUserManager>();AppStoreUser user = await userManager.FindAsync(context.UserName, context.Password);if (user == null){context.SetError("invalid_grant", "Invalid username or password.");return;}ClaimsIdentity oAuthIdentity = await userManager.GenerateUserIdentityAsync(user, OAuthDefaults.AuthenticationType);AuthenticationProperties properties = new AuthenticationProperties(); AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);context.Validated(ticket);}public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context){if (context.ClientId == null){context.Validated();}return Task.FromResult<object>(null);} }

?


OWIN這個中間件的工作原理大致是:

?

→對Token的請求過來
→OWIN調(diào)用以上的GrantResourceOwnerCredentials方法
→OAuthAuthorizationServerProvider獲取UerManager的實例
→OAuthAuthorizationServerProvider創(chuàng)建access token
→OAuthAuthorizationServerProvider創(chuàng)建access token給響應(yīng)
→Identity的UserManager檢查用戶的credentials是否有效
→Identity的UserManager創(chuàng)建ClaimsIdentity

?

接著,在WebApiConfig中配置,讓API只接受bearer token authentication。

?

public static class WebApiConfig {public static void Register(HttpConfiguration config){// Web API configuration and services// Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication();config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));// Web API routes config.MapHttpAttributeRoutes();} }

?

在需要驗證的控制器上加上Authorize特性。

?

[Authorize] public class OrdersController : ApiController {}

?

AccountController用來處理用戶的相關(guān)事宜。

?

[Authorize] [RoutePrefix("api/Account")] public class AccountController : ApiController {//private const string LocalLoginProvider = "Local";private AppStoreUserManager _userManager;public AccountController(){}public AccountController(AppStoreUserManager userManager,ISecureDataFormat<AuthenticationTicket> accessTokenFormat){UserManager = userManager;AccessTokenFormat = accessTokenFormat;}public AppStoreUserManager UserManager{get{return _userManager ?? Request.GetOwinContext().GetUserManager<AppStoreUserManager>();}private set{_userManager = value;}}public ISecureDataFormat<AuthenticationTicket> AccessTokenFormat { get; private set; }// POST api/Account/Register [AllowAnonymous][Route("Register")]public async Task<IHttpActionResult> Register(RegistrationModel model){if (!ModelState.IsValid){return BadRequest(ModelState);}var user = new AppStoreUser() { UserName = model.Email, Email = model.Email };IdentityResult result = await UserManager.CreateAsync(user, model.Password);if (!result.Succeeded){return GetErrorResult(result);}return Ok();}protected override void Dispose(bool disposing){if (disposing && _userManager != null){_userManager.Dispose();_userManager = null;}base.Dispose(disposing);}#region Helpersprivate IAuthenticationManager Authentication{get { return Request.GetOwinContext().Authentication; }}private IHttpActionResult GetErrorResult(IdentityResult result){if (result == null){return InternalServerError();}if (!result.Succeeded){if (result.Errors != null){foreach (string error in result.Errors){ModelState.AddModelError("", error);}}if (ModelState.IsValid){// No ModelState errors are available to send, so just return an empty BadRequest.return BadRequest();}return BadRequest(ModelState);}return null;}#endregion }

?

3、AngularJS

?

在前端,把token相關(guān)的常量放到主module中去。

?

angular.module('gadgetsStore').constant('gadgetsUrl', 'http://localhost:61691/api/gadgets').constant('ordersUrl', 'http://localhost:61691/api/orders').constant('categoriesUrl', 'http://localhost:61691/api/categories').constant('tempOrdersUrl', 'http://localhost:61691/api/sessions/temporders').constant('registerUrl', '/api/Account/Register').constant('tokenUrl', '/Token').constant('tokenKey', 'accessToken').controller('gadgetStoreCtrl', function ($scope, $http, $location, gadgetsUrl, categoriesUrl, ordersUrl, tempOrdersUrl, cart, tokenKey) {

?

提交訂單的時候需要把token寫到headers的Authorization屬性中去。

?

$scope.sendOrder = function (shippingDetails) {var token = sessionStorage.getItem(tokenKey);console.log(token);var headers = {};if (token) {headers.Authorization = 'Bearer ' + token;}var order = angular.copy(shippingDetails);order.gadgets = cart.getProducts();$http.post(ordersUrl, order, { headers: { 'Authorization': 'Bearer ' + token } }).success(function (data, status, headers, config) {$scope.data.OrderLocation = headers('Location');$scope.data.OrderID = data.OrderID;cart.getProducts().length = 0;$scope.saveOrder();$location.path("/complete");}).error(function (data, status, headers, config) {if (status != 401)$scope.data.orderError = data.Message;else {$location.path("/login");}}).finally(function () {}); }

?

在主module中增加登出和注冊用戶的功能。

?

$scope.logout = function () {sessionStorage.removeItem(tokenKey); } $scope.createAccount = function () {$location.path("/register"); }

?

當(dāng)然還需要添加對應(yīng)的路由:

?

$routeProvider.when("/login", {templateUrl: "app/views/login.html"}); $routeProvider.when("/register", {templateUrl: "app/views/register.html"});

?

再往主module中添加一個controller,用來處理用戶賬戶相關(guān)事宜。

?

angular.module("gadgetsStore").controller('accountController', function ($scope, $http, $location, registerUrl, tokenUrl, tokenKey) {$scope.hasLoginError = false;$scope.hasRegistrationError = false;// Registration$scope.register = function () {$scope.hasRegistrationError = false;$scope.result = '';var data = {Email: $scope.registerEmail,Password: $scope.registerPassword,ConfirmPassword: $scope.registerPassword2};$http.post(registerUrl, JSON.stringify(data)).success(function (data, status, headers, config) {$location.path("/login");}).error(function (data, status, headers, config) {$scope.hasRegistrationError = true;var errorMessage = data.Message;console.log(data);$scope.registrationErrorDescription = errorMessage;if (data.ModelState['model.Email'])$scope.registrationErrorDescription += data.ModelState['model.Email'];if (data.ModelState['model.Password'])$scope.registrationErrorDescription += data.ModelState['model.Password'];if (data.ModelState['model.ConfirmPassword'])$scope.registrationErrorDescription += data.ModelState['model.ConfirmPassword'];if (data.ModelState[''])$scope.registrationErrorDescription += data.ModelState[''];}).finally(function () {});}$scope.login = function () {$scope.result = '';var loginData = {grant_type: 'password',username: $scope.loginEmail,password: $scope.loginPassword};$http({method: 'POST',url: tokenUrl,data: $.param(loginData),headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}}).then(function (result) {console.log(result);$location.path("/submitorder");sessionStorage.setItem(tokenKey, result.data.access_token);$scope.hasLoginError = false;$scope.isAuthenticated = true;}, function (data, status, headers, config) {$scope.hasLoginError = true;$scope.loginErrorDescription = data.data.error_description;});}});

?

有關(guān)登錄頁:

?

<div ng-controller="accountController"><form role="form"><input name="email" type="email" ng-model="loginEmail" autofocus=""><input name="password" type="password" ng-model="loginPassword" value=""><div ng-show="hasLoginError"><a href="#" ng-bind="loginErrorDescription"></a></div><a href="" ng-click="login()">Login</a><a href="" ng-click="createAccount()">Create account</a></form> </div>

?

有關(guān)注冊頁:

?

<div ng-controller="accountController"><form role="form"><input name="email" type="email" ng-model="registerEmail" autofocus=""><input name="password" type="password" ng-model="registerPassword" value=""><input name="confirmPassword" type="password" ng-model="registerPassword2" value=""><div ng-show="hasRegistrationError"><a href="#" ng-bind="registrationErrorDescription"></a></div><a href="" ng-click="register()">Create account</a</form> </div>

?

在購物車摘要區(qū)域添加一個登出按鈕。

?

<a href="" ng-show="isUserAuthenticated()" ng-click="logout()">Logout</a>

?

最后可以把賬戶相關(guān)封裝在一個服務(wù)中。

?

angular.module("gadgetsStore").service('accountService', function ($http, registerUrl, tokenUrl, tokenKey) {this.register = function (data) {var request = $http.post(registerUrl, data);return request;}this.generateAccessToken = function (loginData) {var requestToken = $http({method: 'POST',url: tokenUrl,data: $.param(loginData),headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}});return requestToken;}this.isUserAuthenticated = function () {var token = sessionStorage.getItem(tokenKey);if (token)return true;elsereturn false;}this.logout = function () {sessionStorage.removeItem(tokenKey);}});

?

把有關(guān)訂單相關(guān),封裝在storeService.js中:

?

angular.module("gadgetsStore").service('storeService', function ($http, gadgetsUrl, categoriesUrl, tempOrdersUrl, ordersUrl, tokenKey) {this.getGadgets = function () {var request = $http.get(gadgetsUrl);return request;}this.getCategories = function () {var request = $http.get(categoriesUrl);return request;}this.submitOrder = function (order) {var token = sessionStorage.getItem(tokenKey);console.log(token);var headers = {};if (token) {headers.Authorization = 'Bearer ' + token;}var request = $http.post(ordersUrl, order, { headers: { 'Authorization': 'Bearer ' + token } });return request;}this.saveTempOrder = function (currentProducts) {var request = $http.post(tempOrdersUrl, currentProducts);return request;}this.loadTempOrder = function () {var request = $http.get(tempOrdersUrl);return request;}});

?

本系列結(jié)束

?

總結(jié)

以上是生活随笔為你收集整理的购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

99精品成人 | 免费高清av在线看 | 久久99久国产精品黄毛片入口 | 成人视屏免费看 | 亚洲日本黄色 | 不卡电影一区二区三区 | 97人人爽 | 激情偷乱人伦小说视频在线观看 | 四季av综合网站 | 一区二区三区在线电影 | 精品91视频 | 亚洲综合色视频 | 成年人电影免费在线观看 | 精品影院一区二区久久久 | 日韩在线色视频 | 久久 一区| 九九久久免费视频 | 欧美久久久一区二区三区 | 日韩中文字幕一区 | 去干成人网 | 中午字幕在线观看 | 国产免费成人av | 久久国产精品久久国产精品 | 色av婷婷| 99视频精品免费视频 | 日韩一级电影在线观看 | 欧美极品在线播放 | 人人插超碰 | 91看片网址 | 免费在线黄色av | 中文字幕在线观看完整 | 久久久久久久国产精品 | 午夜视频在线观看欧美 | 亚洲精品看片 | 最新色站 | 午夜10000| 最近中文字幕完整视频高清1 | 精品久久久久久久久久久院品网 | 久黄色 | aaa日本高清在线播放免费观看 | a'aaa级片在线观看 | 欧美一级片在线免费观看 | 中文字幕在线一区二区三区 | 99久久日韩精品视频免费在线观看 | 天堂网在线视频 | 亚洲国产成人精品在线观看 | 久久香蕉国产精品麻豆粉嫩av | 国产精品久久久久免费 | 精品一区二区视频 | 久99久视频 | 成人羞羞免费 | 日韩羞羞 | 成人在线观看免费视频 | 久久视讯 | 欧美激情精品一区 | 激情五月五月婷婷 | 香蕉91视频 | 亚洲成人av在线播放 | 国产99免费视频 | 国产免费美女 | 九九色网 | 国产综合香蕉五月婷在线 | 日韩欧美高清一区二区三区 | 99久高清在线观看视频99精品热在线观看视频 | a天堂最新版中文在线地址 久久99久久精品国产 | www.久久色 | 免费观看国产视频 | 懂色av一区二区三区蜜臀 | 国产拍揄自揄精品视频麻豆 | 免费精品久久久 | 九草视频在线观看 | 青青久草在线视频 | 婷婷网五月天 | 黄色av网站在线免费观看 | 深爱五月激情网 | 丁香5月婷婷 | 日韩精品一区二区三区高清免费 | .国产精品成人自产拍在线观看6 | 色99久久 | 精品资源在线 | 天天躁天天狠天天透 | 久久久久久久网 | 国产裸体视频bbbbb | 久久福利在线 | 久久精品电影 | 精久久久久 | 久草视频免费在线播放 | 伊人影院在线观看 | 91资源在线观看 | 91成年视频 | 国产精品久久一区二区无卡 | 一级黄色大片在线观看 | www视频在线播放 | 久久婷婷五月综合色丁香 | 国产三级国产精品国产专区50 | 色综合人人 | 成人理论电影 | 亚洲精品视频在线观看免费视频 | 免费av试看 | 午夜影视剧场 | 激情综合电影网 | 伊人精品在线 | 久久成视频 | 激情av一区二区 | 国产精品精品久久久久久 | 亚洲精品videossex少妇 | 久久天堂亚洲 | 1区2区3区在线观看 三级动图 | 青青河边草免费直播 | 天天操天天添 | 精品国产日本 | 天天色天天搞 | 久久久精品免费看 | 久久人人爽人人人人片 | 岛国av在线免费 | 成人一区二区在线观看 | 国产精品欧美久久 | 99久久毛片 | 国产系列在线观看 | 天天插天天爱 | 国产精品欧美日韩在线观看 | 欧美一级免费黄色片 | 久久综合一本 | 欧美污在线观看 | 高清不卡一区二区在线 | www夜夜| 三级视频日韩 | 在线视频 影院 | 中文字幕一区二区三区在线视频 | 亚洲精品视频免费在线观看 | 中文字幕av免费在线观看 | 国产黄色在线看 | 天天色天天操综合 | 五月天网站在线 | 久久久婷 | 手机成人在线电影 | 免费亚洲精品 | av看片在线观看 | 91精品国产综合久久久久久久 | 91重口视频| 天天干天天干天天色 | 伊人色**天天综合婷婷 | 亚洲va在线va天堂va偷拍 | 91精品视频导航 | 在线a人片免费观看视频 | 精品国产乱码久久久久久浪潮 | 亚洲资源视频 | 99精品国产一区二区 | 97看片| av黄在线播放 | 国产午夜精品在线 | aaa免费毛片 | 九九交易行官网 | 亚洲天堂网在线播放 | 亚洲一区二区三区miaa149 | 国产精品18久久久久久久网站 | 久久久久久国产精品美女 | 99热国产在线观看 | 97超碰在线资源 | 国产精品免费在线视频 | 午夜精品电影 | 中文在线字幕免费观看 | 国产精品99久久久久久大便 | 久草a在线| 五月婷婷免费 | 中文一二区 | 婷婷av综合 | 欧美另类xxxxx| 中文字幕中文字幕在线中文字幕三区 | 成人免费在线看片 | 日韩综合视频在线观看 | 69视频国产 | 国产成人黄色网址 | 中文永久免费观看 | 最近中文字幕国语免费高清6 | 精品91| 国产黄色资源 | 国产成人精品一区二区在线 | 超碰公开在线观看 | 日韩中文三级 | 日日夜夜婷婷 | 黄污视频网站大全 | 91久久在线观看 | 久久精品网站免费观看 | 五月天中文在线 | 三级小视频在线观看 | 狠狠干天天色 | 日韩在线电影一区二区 | 国产伦精品一区二区三区高清 | 国产精品av在线 | 69av视频在线| 久久少妇免费视频 | 久久国产精品一国产精品 | 一区二区不卡视频在线观看 | 高清国产午夜精品久久久久久 | 午夜男人影院 | 久久久久99999 | 免费国产一区二区 | 怡红院av久久久久久久 | 亚洲国产中文在线 | 久久久亚洲影院 | 欧美日韩精品在线观看视频 | 欧美成人按摩 | 麻豆视频一区 | 国产精品手机在线观看 | 欧美在线aa | 欧美一区二区三区激情视频 | 色综合久久久久久久 | 日韩中文在线播放 | 区一区二区三区中文字幕 | 狠狠躁日日躁狂躁夜夜躁av | 超碰av在线 | 日本最大色倩网站www | 国产精品资源网 | 日韩高清毛片 | 99精品成人 | 伊人久久电影网 | 欧美高清成人 | 中文国产字幕 | 最近中文字幕mv | 国产又粗又长的视频 | 亚洲精品在线国产 | 天天干天天搞天天射 | 在线激情影院一区 | 中文字幕在线乱 | 久久系列 | 久久久亚洲电影 | 国产精品密入口果冻 | 精品久久国产精品 | 草久在线观看 | 在线只有精品 | 精品国产一区二区三区久久久蜜月 | 久久精品影片 | 日韩在线观看 | 操操操日日日干干干 | 91高清免费在线观看 | 91人人爽人人爽人人精88v | 国产一区二区综合 | 成人毛片一区 | 97福利社 | 最新日韩在线观看 | 欧美视频一区二 | 福利视频入口 | 久久免费成人精品视频 | 黄色软件大全网站 | 99视频在线免费 | 国内精品久久久久久久久久久 | 五月天丁香 | 国产麻豆剧传媒免费观看 | 日韩免费在线播放 | 四虎在线观看视频 | 欧美一级片免费在线观看 | 免费视频99 | 国产精品久久久久久久久久东京 | 最近日韩中文字幕中文 | 精品视频国产 | 国产麻豆果冻传媒在线观看 | 99精彩视频在线观看免费 | 日韩av成人在线 | 国产成人综合图片 | 91少妇精拍在线播放 | 欧美性大战 | 色狠狠久久av五月综合 | 久久久久久国产精品美女 | 91精品免费 | 91黄色免费网站 | 亚洲精品玖玖玖av在线看 | 久久国产精品二国产精品中国洋人 | 国产精品99久久免费观看 | 91精品啪在线观看国产 | 亚洲一区二区观看 | 亚洲精品影视在线观看 | 91精品爽啪蜜夜国产在线播放 | 视频在线观看99 | 91丨九色丨国产女 | 99精品视频一区 | 丁香五月亚洲综合在线 | 国产精品一区二区三区观看 | 国产精彩视频一区 | 狠狠狠狠狠狠狠 | 91av中文字幕 | 中文字幕在线观看亚洲 | 美女网站在线免费观看 | 天天操福利视频 | 超碰在线94| 亚洲国产成人久久综合 | 天天射色综合 | 97超级碰碰碰视频在线观看 | 欧美乱熟臀69xxxxxx | 日韩网站免费观看 | 国内精品久久久久久久久久清纯 | 香蕉视频在线观看免费 | 六月婷婷色| 欧美一二三区播放 | 伊人电影天堂 | 国产精品久久久久久久久久久久久 | 国产看片网站 | 国产在线最新 | 91人人插 | 狠狠色丁香婷婷综合视频 | 中文字幕视频一区 | 中文字幕乱码日本亚洲一区二区 | 黄色软件在线观看 | av免费试看| 国产亚洲精品女人久久久久久 | 日韩欧美一区二区三区黑寡妇 | 成人久久影院 | 黄色软件在线看 | 四川妇女搡bbbb搡bbbb搡 | 免费在线观看av片 | 国产在线黄色 | a级国产片 | 精品国产乱码一区二区三区在线 | 久产久精国产品 | 成人资源在线观看 | 久久黄色小说 | 天天操天天色天天射 | 成人羞羞视频在线观看免费 | 久久久久久久久久久综合 | 日韩免费不卡视频 | a级国产乱理论片在线观看 伊人宗合网 | 精品国产伦一区二区三区观看体验 | 久久最新网址 | 99精品在这里 | 激情欧美一区二区三区免费看 | 久久免费成人精品视频 | 亚州精品一二三区 | 在线日本看片免费人成视久网 | www.夜夜操.com | 91在线免费视频观看 | 国产香蕉av| 精品免费国产一区二区三区四区 | 在线电影 你懂得 | 一级一片免费观看 | 国产黄色网 | 国产精品情侣视频 | 国产专区日韩专区 | 中文字幕在线观看一区二区三区 | av在线播放亚洲 | 97超碰福利久久精品 | 久久五月网 | 欧美性大胆 | 久久久高清免费视频 | 欧美精品国产精品 | 精品爱爱| 高清视频一区 | 欧美日韩国产精品久久 | 久久91久久久久麻豆精品 | 国产香蕉97碰碰久久人人 | 五月婷婷丁香网 | 国内精品久久久久影院一蜜桃 | 午夜国产福利在线 | 久久成人在线 | 免费在线观看av电影 | 精品国产自在精品国产精野外直播 | 五月婷婷中文字幕 | 久草久草在线 | 五月天综合网 | 国产青春久久久国产毛片 | 亚洲精品网址在线观看 | 中日韩免费视频 | 77国产精品 | 国产亚洲观看 | 成人亚洲精品久久久久 | 成人污视频在线观看 | 中国一区二区视频 | 日韩欧美在线一区 | 国产精品久久一区二区三区不卡 | 国产剧情一区二区 | 狠狠色香婷婷久久亚洲精品 | 最新av免费在线观看 | 欧美日韩在线观看一区二区 | 午夜久久久精品 | 国产96av| 久久久久久国产精品免费 | 成片免费| 视频91| 六月天综合网 | av电影av在线 | 色综合久久88色综合天天人守婷 | 国产精品久久久久久高潮 | 91中文字幕在线播放 | 亚洲精品视频在线观看免费视频 | 亚洲精品国产麻豆 | 久久久久久久久久久久亚洲 | av网站在线观看免费 | 黄www在线观看 | 久久草网站 | 天天躁日日| 欧美精品一区二区免费 | 日韩av电影国产 | 欧美日韩精品久久久 | 国产精品毛片久久久久久 | 国产一区高清在线观看 | 狠狠躁天天躁 | 日本激情中文字幕 | 精品久久久久亚洲 | 五月天久久久久久 | 东方av在 | 色综合天天做天天爱 | 成人影片免费 | 日韩免费在线视频观看 | 成人h动漫精品一区二 | 欧美一级电影免费观看 | 久久丁香网 | 午夜精品一区二区三区四区 | 国产麻豆剧传媒免费观看 | 人人爽人人爽人人爽 | av综合av| 国产人成精品一区二区三 | 美女久久久久久久久久 | a视频免费在线观看 | 91精品国产一区二区三区 | 免费观看的黄色片 | 久久亚洲私人国产精品 | 久久视频99 | www黄色大片 | 又黄又爽又无遮挡免费的网站 | 激情综合啪| 99这里只有久久精品视频 | 中文字幕在线看视频 | 中文字幕免费一区二区 | 激情婷婷在线 | 69久久夜色精品国产69 | 久久这里只有精品视频99 | 日本不卡视频 | 欧美日韩国产综合网 | a级成人毛片 | 亚州精品天堂中文字幕 | 日韩中文字幕免费 | 日韩免费视频在线观看 | 黄色a视频 | 国产一区视频在线播放 | 欧美a级在线 | 成人黄色资源 | 国产999精品久久久久久麻豆 | 在线观看成人网 | 成人小电影在线看 | 国产污视频在线观看 | 免费一级片视频 | 在线免费精品视频 | 偷拍区另类综合在线 | 国内视频在线 | 黄色www | 久久精品牌麻豆国产大山 | 又黄又爽又刺激视频 | 国产一区视频免费在线观看 | 9992tv成人免费看片 | 亚洲国产mv | 欧美va天堂在线电影 | 六月丁香婷 | 欧美日韩高清一区二区 国产亚洲免费看 | 日韩欧美成 | 成人影视免费 | 成人精品国产 | 一区二区三区手机在线观看 | 美女久久一区 | 久久在线看| 婷婷中文字幕综合 | 91中文字幕 | 美女av在线免费 | 国产精品久一 | 狠狠色丁香婷婷综合久小说久 | www激情网| 一本一本久久a久久精品综合妖精 | 色精品视频 | 精品一区二区三区四区在线 | 欧美精品一区二区三区一线天视频 | 91av在线电影 | 狠狠躁夜夜a产精品视频 | 日韩中文字幕亚洲一区二区va在线 | 久久久99久久 | 91在线中字 | 欧美日韩视频 | 国产69精品久久久久久 | 精品国产中文字幕 | 久久视讯 | 黄色三级免费片 | 亚洲欧美视频在线 | 国产一区二区手机在线观看 | 成年人黄色av | 色婷婷影视 | av免费电影在线观看 | 色在线免费 | 国产精品久久久一区二区 | 精品国产一区二区三区男人吃奶 | 中中文字幕av | 欧美视频二区 | 欧美日韩视频免费 | 日韩爱爱片 | 久久综合在线 | 成人黄色在线 | av免费网站在线观看 | 欧美日韩国产色综合一二三四 | 色综合天 | 亚洲精品免费在线视频 | www.色爱 | 蜜臀精品久久久久久蜜臀 | 亚洲97在线| 人人爽爽人人 | 成年人av在线播放 | 在线观看免费一级片 | 国产中文字幕国产 | 一本一本久久a久久精品综合小说 | 在线视频你懂 | 国产三级视频在线 | 色播五月激情五月 | 五月天九九 | 一区二区影院 | 99精品国产99久久久久久福利 | 久久久精品欧美一区二区免费 | 香蕉日日 | 天天草网站 | 国产又粗又猛又黄又爽的视频 | 国产成人精品一二三区 | 欧美污网站 | 日本黄色免费播放 | 免费www视频 | 久草五月 | 日韩在线观看中文 | а天堂中文最新一区二区三区 | 丁香六月婷婷开心 | 精品久久久久久一区二区里番 | 欧美一级专区免费大片 | 毛片二区 | 婷婷色网站 | 国产高清精品在线 | 国产一级在线免费观看 | 免费在线观看亚洲视频 | 青青久草在线视频 | 激情综合网色播五月 | 成人免费在线看片 | 久久人人精 | 久久综合免费视频影院 | www夜夜操com | 亚洲成aⅴ人片久久青草影院 | 亚洲日日射| 亚洲精选在线观看 | 狠狠狠狠狠狠操 | 欧美日韩精品在线观看 | 午夜精品福利一区二区三区蜜桃 | 免费三级大片 | 综合久久精品 | 精品久久免费看 | 九色91av | 91桃色国产在线播放 | 国产亚洲精品久久久久动 | 日本一区二区不卡高清 | 久久不卡国产精品一区二区 | 久草99 | 成人国产精品免费观看 | 国产黄色精品在线 | 久久不见久久见免费影院 | 91视频高清完整版 | 国产精品人成电影在线观看 | 99中文字幕视频 | 久久精品波多野结衣 | 日本精品一区二区三区在线观看 | 日韩国产欧美在线播放 | 中文字幕一区二区三区精华液 | 久久亚洲欧美日韩精品专区 | 六月久久婷婷 | 国产一级二级三级视频 | 97国产大学生情侣白嫩酒店 | 九草视频在线观看 | 国产精品网站一区二区三区 | 91高清在线 | 婷婷在线视频 | 中文字幕91视频 | 欧洲精品在线视频 | 五月天国产 | 久久精品99国产精品亚洲最刺激 | 中文字幕国产精品 | 激情狠狠干 | 色综合国产 | 国产精品色 | 午夜精品一二三区 | 视频国产在线 | 九九久久久 | 欧美一二三区在线观看 | 日日爱影视 | 国产一区免费视频 | 久久综合九色综合久久久精品综合 | 婷婷在线看 | 欧美国产亚洲精品久久久8v | 一区在线观看视频 | 成人av一区二区三区 | 成人看片| 深爱激情婷婷网 | av在线激情| 亚洲天堂首页 | 欧美 国产 视频 | 日韩免费精品 | 久久综合之合合综合久久 | 亚洲视频久久 | 亚洲自拍偷拍色图 | 在线观看亚洲精品 | 成年人看片网站 | 亚洲永久精品一区 | 国产视频每日更新 | 久热精品国产 | 97网| 操久 | 国产97在线播放 | 久久尤物电影视频在线观看 | 丁香婷婷激情五月 | 久久久福利视频 | 爱爱av在线 | 99精品偷拍视频一区二区三区 | 极品嫩模被强到高潮呻吟91 | 在线观看国产v片 | 久久不色 | 久久99热国产 | 免费av影视 | 96久久精品| 亚洲精品女人久久久 | 欧美日韩一级久久久久久免费看 | 欧美日韩国产精品一区二区亚洲 | www激情网| 久久精品一区二区国产 | 狠狠综合网 | 亚洲专区视频在线观看 | japanese黑人亚洲人4k | 精品国产美女在线 | 亚洲理论片在线观看 | 在线国产一区二区三区 | 中文字幕亚洲不卡 | 国产精品av久久久久久无 | 在线观看av中文字幕 | 99热最新精品 | 99视频黄 | av再线观看 | 久久久久免费观看 | 六月丁香婷婷久久 | 91久久久久久久一区二区 | 日日干视频 | 超碰在线天天 | 三级黄色a | 伊人中文字幕在线 | 一区中文字幕 | 亚洲欧洲国产视频 | 日韩在线在线 | 国产中文字幕在线观看 | 国产精品一区二区你懂的 | 天天干 夜夜操 | 97超碰精品 | av在线官网 | 啪啪小视频网站 | 91传媒激情理伦片 | 日韩欧美观看 | 久久久免费精品国产一区二区 | 久久高清国产 | 免费看国产一级片 | 亚州国产精品视频 | 九九天堂 | 亚洲黄色大片 | a级片在线播放 | av成人亚洲 | 国产中出在线观看 | 色天天综合久久久久综合片 | www.天天射.com| 9草在线| 欧美日韩综合在线观看 | 久久久久久欧美二区电影网 | 久久久久久久久亚洲精品 | av日韩精品 | 色老板在线视频 | 日韩毛片在线一区二区毛片 | 夜夜爱av | 又色又爽的网站 | 亚洲午夜精品久久久久久久久久久久 | 色综合激情网 | 黄色网www| 久久久免费视频播放 | 日韩精品一区二区三区在线播放 | av成人免费在线观看 | 日韩xxxx视频 | 免费h漫在线观看 | av在线专区 | 欧美国产日韩一区二区三区 | 麻豆 videos | 国产xxxx做受性欧美88 | 国产亚洲精品久久久久秋 | 九九九九精品九九九九 | 久久精品一区二区三区中文字幕 | 久久久久福利视频 | 国产中文字幕亚洲 | 国产视频 亚洲视频 | 国产操在线| 国产精品热视频 | 97国产人人| 久久99国产精品免费网站 | 亚洲无线视频 | 在线观看一区 | 国产精品久久久久aaaa | 99久久久久久国产精品 | 九九视频网 | www夜夜操com | 性色在线视频 | 欧美网站黄色 | 欧美a级在线播放 | 992tv人人网tv亚洲精品 | 中中文字幕av | 日本 在线 视频 中文 有码 | 国产综合福利在线 | 婷婷丁香导航 | 亚洲特级片 | 青青久草在线视频 | 99久久久免费视频 | 在线国产能看的 | 国产成人精品亚洲精品 | 免费高清在线视频一区· | 亚洲视屏在线播放 | 日韩视频在线观看免费 | 久久综合免费视频 | 91免费视频黄 | 伊人日日干 | 中文在线8资源库 | 日韩免费在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 日韩特级片 | 黄色毛片一级片 | 日韩在线视频看看 | 亚洲精品中文在线资源 | 天天做天天射 | 成人av高清在线观看 | 中文国产字幕在线观看 | 成人黄色电影免费观看 | 欧洲激情综合 | 国产一区二区高清视频 | 国产专区视频在线 | 国产美女精品视频 | 国产精品久久中文字幕 | 日本久久久久 | 久久天天操 | 最新国产精品视频 | 亚洲最新av在线网站 | 五月激情丁香图片 | 狠狠躁夜夜a产精品视频 | 在线不卡a | 91精品国产一区二区在线观看 | 亚洲精品88欧美一区二区 | 欧美在线一级片 | 久久视频在线观看中文字幕 | 国产麻豆视频免费观看 | 久久好看免费视频 | 玖玖色在线观看 | 九九99| 亚洲精品免费在线观看视频 | 天天干夜夜擦 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产精品男女视频 | 欧美日韩中文字幕在线视频 | 一级黄色av | 国产黄色在线观看 | 国产午夜一级毛片 | 中文字幕欧美三区 | 国产精品一区二区三区在线免费观看 | 欧美男男激情videos | 日韩在线短视频 | 婷婷丁香六月 | 草久热| 国产v亚洲v | 日日弄天天弄美女bbbb | 日本最新高清不卡中文字幕 | 最新日韩视频 | 国产福利在线免费观看 | 久久综合久久综合这里只有精品 | 久久国产综合视频 | 国产高清日韩欧美 | 天天射综合网站 | 国产精品高清一区二区三区 | 欧美日韩一级视频 | 99久久精品午夜一区二区小说 | 精品一二三区 | 成人久久免费 | 91在线网站| 久久综合九色综合97_ 久久久 | 在线观看成年人 | 日韩国产欧美视频 | 精品黄色在线 | 日本中文在线 | 精品99在线| 久久刺激视频 | 亚洲精品91天天久久人人 | 狠狠操狠狠干2017 | 国偷自产中文字幕亚洲手机在线 | 97人人澡人人添人人爽超碰 | 欧亚日韩精品一区二区在线 | 中文久久精品 | 97视频在线免费观看 | 国产日产精品一区二区三区四区 | av成人动漫在线观看 | 日本久久电影网 | 国产精品亚洲综合久久 | 久久综合九色综合久久久精品综合 | 91完整版在线观看 | 在线视频 你懂得 | 日韩精品中文字幕在线观看 | 男女靠逼app | 91成人精品一区在线播放 | 亚洲成人网在线 | 在线中文字幕视频 | 国产手机视频在线播放 | 黄色av大片| 制服丝袜一区二区 | av免费电影在线 | 天天色 天天 | 国产精品爽爽久久久久久蜜臀 | 国产成人免费在线观看 | 欧美日韩首页 | 99 久久久久 | 免费在线观看av网址 | 国产一区在线播放 | 久久99久久99精品免观看软件 | 日韩精品欧美精品 | 国产精品久免费的黄网站 | 亚洲精品999 | 久久亚洲私人国产精品 | 91精品久久久久久综合五月天 | 91在线日本 | 欧美日韩中文另类 | 久久国内精品 | 国内精品久久影院 | 久久久久免费精品国产小说色大师 | 国产黄色片久久 | 国产高清日韩欧美 | 欧美一区二区三区免费看 | 日韩激情免费视频 | 亚洲黄色成人 | 18久久久久| 黄色美女免费网站 | 国产小视频国产精品 | 国产伦理一区二区三区 | 亚洲最大免费成人网 | 国产精品久久久久久久久久尿 | 综合久久影院 | 少妇高潮冒白浆 | 久久人人艹 | 天天拍夜夜拍 | 一级一级一片免费 | 中文在线最新版天堂 | 在线小视频你懂的 | 人人爽人人爽人人爽学生一级 | 久久午夜网 | 久色 网| 中文字幕日韩国产 | 99热都是精品 | 天天干天天射天天爽 | 黄色高清视频在线观看 | 久久免费视频网 | 久久久91精品国产一区二区三区 | 亚洲综合视频在线播放 | 狠狠狠狠狠狠操 | 五月婷婷深开心 | av线上看 | 98涩涩国产露脸精品国产网 | 91精品在线观看视频 | 国产精品久久久久永久免费 | 日韩专区 在线 | 色成人亚洲网 | 69中文字幕 | 9999精品免费视频 | 国内综合精品午夜久久资源 | 九九九九色 | 97网| 免费在线观看日韩欧美 | 色中文字幕在线观看 | 99日韩精品 | 1区2区视频 | 在线 日韩 av | 欧美日韩精品影院 | 精品国产99国产精品 | 亚洲精品国产精品国自产在线 | 麻豆精品91| 三级在线视频播放 | 三级av中文字幕 | 91麻豆国产 | 色香蕉在线视频 | 美女精品久久久 | 亚洲国产精品va在线看黑人 | 婷婷精品在线 | 9999亚洲 | 久亚洲精品 | 91麻豆精品国产91久久久无需广告 | 日韩久久久久久 | 波多野结衣综合网 | 亚洲一区二区黄色 | 亚洲五月六月 | 国产一区网址 | av网址最新 | 国产视频在线观看一区 | 在线免费观看黄色av | 91在线视频免费 | 狠狠的操狠狠的干 | 97中文字幕 | 日韩一级片网址 | 免费看高清毛片 | 亚洲综合视频在线播放 | 欧美一区二区三区四区夜夜大片 | 韩国一区视频 | 日韩一区二区在线免费观看 | 精品国产成人 | 亚洲黄色在线 | 91精品在线免费视频 | 91中文字幕永久在线 | 久久成人麻豆午夜电影 | 日韩美在线观看 | 久久久久99精品成人片三人毛片 | 玖玖999| 99夜色| 国产看片网站 | 亚洲自拍av在线 | 色综合天天在线 | 狠狠干免费| 精品a在线| 精品国产一区二区三区久久久久久 | 日本一区二区免费在线观看 | av在线网站观看 | 婷婷六月综合网 | 欧美尹人 | 娇妻呻吟一区二区三区 | 亚洲综合激情网 | 免费日韩 精品中文字幕视频在线 | 婷婷色综 | 毛片网在线播放 | 亚洲国产日韩一区 | 又粗又长又大又爽又黄少妇毛片 | 99国产一区二区三精品乱码 | 2021久久| 亚洲国产精品久久 | 日韩久久久久久久久久久久 | 黄色片软件网站 | 国产精品黑丝在线观看 | 久久激情视频 久久 | 欧美性色黄大片在线观看 | av看片网 | 青青草视频精品 | 免费精品视频在线 | 久久艹国产视频 | 国产手机在线观看 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 国产呻吟在线 | 婷婷久月 | 不卡av在线免费观看 | 亚洲欧洲精品一区二区 | 国产一级在线观看视频 | 国产成人精品一区二区在线 | 国产资源在线免费观看 | 日本h视频在线观看 | 精品国产成人av在线免 | 国产精品久久久久久久久大全 | 热久久这里只有精品 | 毛片区| 最新av观看| 中文字幕在线观看第一区 | 久久99精品久久久久久秒播蜜臀 | 日本电影黄色 | 中文在线8资源库 | 久久国产一二区 | 亚洲午夜av| 免费在线激情电影 | 久久免费视频网站 | 国产精品视频99 | 在线成人小视频 | 国产精品一区二区白浆 | 五月天久久久久久 | 精品国产一区二区三区久久 | 婷婷精品国产欧美精品亚洲人人爽 | 一区二区三区日韩在线 | 久久久久久草 | 97碰在线| 黄在线免费看 | 91在线精品秘密一区二区 | 婷婷在线资源 | 九七在线视频 | 国产精品一区在线 | 久久五月天色综合 | 超碰国产在线 | 欧美日韩亚洲第一 | 热久久免费国产视频 | 成人黄色毛片视频 | 狠狠干.com| 婷婷伊人五月天 | 国产精品久久久久永久免费看 | 国产黄色片久久 | 一级片免费视频 | 在线观看av黄色 | 永久免费视频国产 | 欧美日韩一级视频 | 久久免费av电影 | 天堂av在线免费 | 在线看日韩av | 五月婷久久 | 色a网 | 欧美人人爱 | 午夜av免费看| 在线观看av大片 |