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

您的位置:首頁技術(shù)文章
文章詳情頁

ASP.NET MVC使用Identity增刪改查用戶

瀏覽:110日期:2022-06-09 11:58:25

源碼在這里:https://github.com/darrenji/UseIdentityCRUDUserInMVC,本地下載

在VS2013中創(chuàng)建一個(gè)MVC項(xiàng)目,用默認(rèn)的"無身份驗(yàn)證"作為身份驗(yàn)證機(jī)制。

通過控制臺下載Bootstrap。

Install-Package -version 3.0.3 bootstrap

下載成功后,在解決方案下的Content和Scripts多了該版本的css和js文件。

把創(chuàng)建項(xiàng)目默認(rèn)HomeController中的所有Action以及/Views/Home下的所有視圖刪除。

熱熱身

先來做一個(gè)簡單練習(xí)。

在HomeController中的Index方法中,把一個(gè)字典傳遞給視圖。

    public class HomeController : Controller    {public ActionResult Index(){    Dictionary<string, object> data = new Dictionary<string, object>();    data.Add("placeholder", "placeholder");    return View(data);}    }

_Layout.cshtml設(shè)置如下:

<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <meta charset="utf-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>ASP.NET Identity實(shí)戰(zhàn)</title>    <link href="~/Content/bootstrap.min.css" rel="external nofollow"  rel="stylesheet" />    <link href="~/Content/bootstrap-theme.min.css" rel="external nofollow"  rel="stylesheet" />    <style>.container {padding-top:10px;}.validation-summary-errors{color:red;}    </style></head><body>        <div>@RenderBody()    </div>    @Scripts.Render("~/bundles/jquery")    @Scripts.Render("~/bundles/bootstrap")    @RenderSection("scripts", required: false)</body>

Home/Index.cshtml視圖中:

@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}<div>    <div>用戶明細(xì)</div>    <table>@foreach (string key in Model.Keys){    <tr><th>@key</th><td>@Model[key]</td>    </tr>}    </table></div>

前期準(zhǔn)備

分別安裝如下組件。

Install-Package Microsoft.AspNet.Identity.EntityFramework –Version 2.0.0
Install-Package Microsoft.AspNet.Identity.OWIN -Version 2.0.0
Install-Package Microsoft.Owin.Host.SystemWeb -Version 2.1.0

配置Web.config如下:

<?xml version="1.0" encoding="utf-8"?><!--  有關(guān)如何配置 ASP.NET 應(yīng)用程序的詳細(xì)信息,請?jiān)L問  http://go.microsoft.com/fwlink/?LinkId=301880  --><configuration>  <configSections>    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />  </configSections>  <connectionStrings>    <add name="IdentityDb" providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=IdentityDb;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True"/></connectionStrings>  <appSettings>    <add key="webpages:Version" value="3.0.0.0" />    <add key="webpages:Enabled" value="false" />    <add key="ClientValidationEnabled" value="true" />    <add key="UnobtrusiveJavaScriptEnabled" value="true" />    <add key="owin:AppStartup" value="WebApplication4.IdentityConfig" />  </appSettings>  <system.web>    <compilation debug="true" targetFramework="4.5" />    <httpRuntime targetFramework="4.5" />  </system.web>  <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">      <dependentAssembly><assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />      </dependentAssembly>      <dependentAssembly><assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />      </dependentAssembly>      <dependentAssembly><assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />      </dependentAssembly>      <dependentAssembly><assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />      </dependentAssembly>      <dependentAssembly><assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />      </dependentAssembly>    </assemblyBinding>  </runtime>  <entityFramework>    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />    <providers>      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />    </providers>  </entityFramework></configuration>

以上,

  • 增加了connectionStrings節(jié)點(diǎn),將自動創(chuàng)建localdb數(shù)據(jù)庫
  • 在appSettings節(jié)點(diǎn)中增加了一個(gè)key為owin:AppStartup項(xiàng),這是確保OWIN運(yùn)行正常的全局配置

在Models文件夾下創(chuàng)建如下類。

    public class AppUser : IdentityUser    {    }

在解決方案下創(chuàng)建Infrastructure文件夾。

在Infrastructure文件夾下創(chuàng)建一個(gè)上下文類,需要實(shí)現(xiàn)IdentityDbContext<>接口。

   public class AppIdentityDbContext : IdentityDbContext<AppUser>    {public AppIdentityDbContext()    : base("IdentityDb"){}static AppIdentityDbContext(){    //使用EF Code First第一次創(chuàng)建的時(shí)候調(diào)用    Database.SetInitializer<AppIdentityDbContext>(new IdentityDbInit());}public static AppIdentityDbContext Create(){    return new AppIdentityDbContext();}    }    //初始化    public class IdentityDbInit : DropCreateDatabaseIfModelChanges<AppIdentityDbContext>    {protected override void Seed(AppIdentityDbContext context){    PerformInitialSetup(context);    base.Seed(context);}//初始化工作public void PerformInitialSetup(AppIdentityDbContext context){ }    }

在Infrastructure文件夾下創(chuàng)建一個(gè)管理用戶的類,需要繼承UserManager<AppUser>類。

還記得,先前在appSettings節(jié)點(diǎn)中配置了一個(gè)如下方式:

<add key="owin:AppStartup" value="WebApplication4.IdentityConfig" />

OWIN需要一個(gè)全局啟動文件,默認(rèn)會到項(xiàng)目的頂級命名空間下找IdentityConfig這個(gè)類。

那就在App_Start中創(chuàng)建IdentityConfig這個(gè)類,這個(gè)類在WebApplication4這個(gè)命名空間下。

namespace WebApplication4{    public class IdentityConfig    {public void Configuration(IAppBuilder app){    app.CreatePerOwinContext<AppIdentityDbContext>(AppIdentityDbContext.Create);    app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create);    app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new Microsoft.Owin.PathString("/Account/Login")    });}    }}

顯示用戶

創(chuàng)建AdminController,現(xiàn)在可以向視圖傳遞所有的用戶了,編寫如下:

    public class AdminController : Controller    {public ActionResult Index(){    return View(UserManager.Users);}private AppUserManager UserManager{    get    {return HttpContext.GetOwinContext().GetUserManager<AppUserManager>();    }}    }

再創(chuàng)建Admin/Index.cshtml類型為IEnumerable<AppUser>的強(qiáng)類型視圖。

@model IEnumerable<WebApplication4.Models.AppUser>@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}<div>    <div>所有用戶賬戶    </div>    <table><tr><th>ID</th><th>Name</th><th>Email</th><th></th></tr>@if (Model.Count() == 0){    <tr><td colspan="4">還沒有創(chuàng)建用戶</td></tr>}else{    foreach (WebApplication4.Models.AppUser user in Model)    {<tr>    <td>@user.Id</td>    <td>@user.UserName</td>    <td>@user.Email</td>    <td>@using (Html.BeginForm("Delete", "Admin",    new { id = user.Id })){    @Html.ActionLink("編輯", "Edit", new { id = user.Id },    new { @class = "btn btn-primary btn-xs" })    <button    type="submit">刪除    </button>}    </td></tr>    }}    </table></div>@Html.ActionLink("創(chuàng)建用戶", "Create", null, new { @class = "btn btn-primary" })

創(chuàng)建用戶

在Models文件夾下創(chuàng)建一個(gè)視圖模型。

namespace WebApplication4.Models{    public class CreateModel    {public string Id { get; set; }[Required]public string Name { get; set; }[Required]public string Email { get; set; }[Required]public string Password { get; set; }    }}

在AdminController中添加創(chuàng)建用戶相關(guān)的方法。

   public class AdminController : Controller    {public ActionResult Index(){    return View(UserManager.Users);}//創(chuàng)建顯示public ActionResult Create(){    return View();}[HttpPost]public async Task<ActionResult> Create(CreateModel model){    if(ModelState.IsValid)    {var user = new AppUser{UserName = model.Name, Email = model.Email};IdentityResult result = await UserManager.CreateAsync(user, model.Password);if(result.Succeeded){    return RedirectToAction("Index");}else{    AddErrorsFromResult(result);}    }    return View(model);}//創(chuàng)建接收private void AddErrorsFromResult(IdentityResult result){    foreach(var error in result.Errors)    {ModelState.AddModelError("", error);    }}private AppUserManager UserManager{    get    {return HttpContext.GetOwinContext().GetUserManager<AppUserManager>();    }}    }

在Admin/Create.cshtml視圖頁中:

@model WebApplication4.Models.CreateModel@{    ViewBag.Title = "Create";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Create</h2>@using (Html.BeginForm()) {    @Html.AntiForgeryToken()        <div><h4>創(chuàng)建用戶</h4><hr />@Html.ValidationSummary(true)<div>    @Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Name)@Html.ValidationMessageFor(model => model.Name)    </div></div><div>    @Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Email)@Html.ValidationMessageFor(model => model.Email)    </div></div><div>    @Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Password)@Html.ValidationMessageFor(model => model.Password)    </div></div><div>    <div><input type="submit" value="創(chuàng)建用戶" />    </div></div>    </div>}<div>    @Html.ActionLink("返回", "Index")</div>

點(diǎn)擊"創(chuàng)建"按鈕,創(chuàng)建成功返回顯示用戶頁面。

oh, my god,只是配置了一下就有數(shù)據(jù)了? 數(shù)據(jù)在哪呢?

點(diǎn)擊左上角的"服務(wù)器資源管理器",右鍵"IdentityDb",點(diǎn)擊"刷新"。

再打開AspNetUsers表,剛創(chuàng)建的用戶赫然在列。

好像還有點(diǎn)欠缺,用戶輸入密碼的時(shí)候,總應(yīng)該有些限制吧。

能想到的,ASP.NET Identity都為我們準(zhǔn)備好了。有一個(gè)PasswordValidator類就是干這個(gè)的。

在Infrastructure文件夾中創(chuàng)建一個(gè)PasswordValidator類的繼承子類。

namespace WebApplication4.Infrastructure{    public class CustomPasswordValidator : PasswordValidator    {public override async Task<IdentityResult> ValidateAsync(string pass){    IdentityResult result = await base.ValidateAsync(pass);    if (pass.Contains("12345"))    {var errors = result.Errors.ToList();errors.Add("密碼中包含太多連續(xù)數(shù)字");result = new IdentityResult(errors);    }    return result;}    }}

然后需要把這個(gè)規(guī)則告訴UserManager。

namespace WebApplication4.Infrastructure{    public class AppUserManager : UserManager<AppUser>    {public AppUserManager(IUserStore<AppUser> store) : base(store) { }public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context){    //identity ef上下文    AppIdentityDbContext db = context.Get<AppIdentityDbContext>();    //與identity ef相關(guān)的UserStore    IUserStore<AppUser> us = new UserStore<AppUser>(db);    AppUserManager manager = new AppUserManager(us);    //密碼相關(guān)    manager.PasswordValidator = new CustomPasswordValidator { RequiredLength = 6,RequireNonLetterOrDigit = false,RequireDigit = false,RequireLowercase = true,RequireUppercase = true    };    return manager;}    }}

再次運(yùn)行程序,創(chuàng)建用戶頁面,嘗試輸入不通過的密碼。

不過,關(guān)于密碼的規(guī)則,似乎可以在View Model的驗(yàn)證層面就可以解決掉。

編輯和刪除用戶

在AdminController中增加編輯和刪除的部分。

    public class AdminController : Controller    {public ActionResult Index(){    return View(UserManager.Users);}//創(chuàng)建顯示public ActionResult Create(){    return View();}//創(chuàng)建接收[HttpPost]public async Task<ActionResult> Create(CreateModel model){    if(ModelState.IsValid)    {var user = new AppUser{UserName = model.Name, Email = model.Email};IdentityResult result = await UserManager.CreateAsync(user, model.Password);if(result.Succeeded){    return RedirectToAction("Index");}else{    AddErrorsFromResult(result);}    }    return View(model);}//編輯顯示public async Task<ActionResult> Edit(string id){    AppUser user = await UserManager.FindByIdAsync(id);        if(User != null)    {CreateModel createModel = new CreateModel();createModel.Id = user.Id;createModel.Email = user.Email;createModel.Name = user.UserName;createModel.Password = user.PasswordHash;return View(createModel);    }    else    {return RedirectToAction("Index");    }}//接收編輯[HttpPost]public async Task<ActionResult> Edit(CreateModel createModel){        if(ModelState.IsValid)    {AppUser user = await UserManager.FindByIdAsync(createModel.Id);if (user != null){    //關(guān)于郵箱    user.Email = createModel.Email;    IdentityResult validEmail = await UserManager.UserValidator.ValidateAsync(user);    if (!validEmail.Succeeded)    {AddErrorsFromResult(validEmail);    }    user.UserName = createModel.Name;    //關(guān)于密碼    IdentityResult validPass = null;    if (createModel.Password != string.Empty)    {validPass = await UserManager.PasswordValidator.ValidateAsync(createModel.Password);if (validPass.Succeeded){    user.PasswordHash = UserManager.PasswordHasher.HashPassword(createModel.Password);}else{    AddErrorsFromResult(validPass);}    }    user.Email = createModel.Email;    //驗(yàn)證結(jié)果    if ((validEmail.Succeeded && validPass == null) || (validEmail.Succeeded    && createModel.Password != string.Empty && validPass.Succeeded))    {IdentityResult result = await UserManager.UpdateAsync(user);if (result.Succeeded){    return RedirectToAction("Index");}else{    AddErrorsFromResult(result);}    }    else    {ModelState.AddModelError("", "無此用戶");    }}return View(createModel);    }    else    {return View(createModel);    }    }//刪除[HttpPost]public async Task<ActionResult> Delete(string id){    AppUser user = await UserManager.FindByIdAsync(id);    if(user != null)    {IdentityResult result = await UserManager.DeleteAsync(user);if(result.Succeeded){    return RedirectToAction("Index");}else{    return View("Error", result.Errors);}    }    else    {return View("Error", new string[] { "沒有此用戶" });    }}private void AddErrorsFromResult(IdentityResult result){    foreach(var error in result.Errors)    {ModelState.AddModelError("", error);    }}private AppUserManager UserManager{    get    {return HttpContext.GetOwinContext().GetUserManager<AppUserManager>();    }}    }

Admin/Edit.cshtml視圖。

@model WebApplication4.Models.CreateModel@{    ViewBag.Title = "Edit";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Edit</h2>@using (Html.BeginForm()){    @Html.AntiForgeryToken()        <div><hr />@Html.ValidationSummary(true)@Html.HiddenFor(model => model.Id)<div>    @Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Name)@Html.ValidationMessageFor(model => model.Name)    </div></div><div>    @Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Email)@Html.ValidationMessageFor(model => model.Email)    </div></div><div>    @Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" })    <div>@Html.EditorFor(model => model.Password)@Html.ValidationMessageFor(model => model.Password)    </div></div><div>    <div><input type="submit" value="保存" />    </div></div>    </div>}<div>    @Html.ActionLink("返回", "Index")</div>

另外,如果刪除失敗,跳轉(zhuǎn)到Shared/Error.cshtml視圖頁。

@model IEnumerable<string>@{ ViewBag.Title = "Error";}<div>    @switch (Model.Count())    {case 0:    @: Something went wrong. Please try again    break;case 1:@Model.First();  break;default:@: 發(fā)現(xiàn)如下錯誤:<ul>    @foreach (string error in Model)    {<li>@error</li>    }</ul>    break;    }</div>@Html.ActionLink("確定", "Index", null, new { @class = "btn btn-default" })

至此,使用ASP.NET Identy實(shí)現(xiàn)對用戶的增刪改查完畢,ASP.NET Identity真的很好很強(qiáng)大!

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

標(biāo)簽: ASP.NET
相關(guān)文章:
主站蜘蛛池模板: 精品国产仑片一区二区三区 | 国产精品一区二区三区在线播放 | 99综合 | 精品成人免费一区二区在线播放 | 精品国产不卡一区二区三区 | av一区二区三区 | 羞羞视频在线观看入口 | 成人网在线观看 | 亚洲啊v在线| 国产精品毛片 | 欧美视频区 | 狠狠爱天天操 | 国产精品一区二区三区免费视频 | 久久av资源| 91视频网 | 国产欧美一区二区三区国产幕精品 | 亚洲精品免费观看 | 免费在线观看一区二区 | 国产精品99久久 | 欧美一级二级三级 | 色综合久久久久 | 日韩成人在线一区 | 欧美,日韩| 中文字幕av一区二区三区 | 亚洲三区在线观看 | 国产综合精品一区二区三区 | 色花av| 日韩在线播放网址 | 永久免费网站 | 精品影院| 久久av一区 | 亚洲视频在线一区 | 91视频网| 国产精品久久久久久久福利院 | 高清一区二区三区 | 在线免费观看黄 | 日韩国产在线 | 久久九九精品久久 | 7777av| 精品久久久久久久久久久久包黑料 | 999热在线 | av免费网站在线观看 | 美女福利视频网站 | 99免费在线观看视频 | 羞羞视频在线观看入口 | 国产中文字幕在线观看 | 一区综合| 成人中文网| 91久久久久久久久久久久久久久久 | 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 91精品中文字幕一区二区三区 | 国产成人精品免费视频大全 | 成人国产精品视频 | 免费一区二区三区视频在线 | 97在线观看视频 | 欧美日韩在线电影 | 亚洲h视频 | www日本视频 | 四虎新网站 | 国产二区免费 | 国产一区二区日韩 | 久久mm| 国产精品成人国产乱一区 | 一区中文字幕 | 国产在线视频网站 | 91电影在线| 久久久久精 | 国产成人精品综合 | 成人免费视频网址 | 成人亚洲一区二区 | 狠狠干美女 | 亚洲xx视频 | 亚洲日本韩国在线观看 | 精品一区二区久久久久久久网站 | 久久极品 | 视频一区久久 | 精品一区二区三区不卡 | 成全视频免费观看在线看黑人 | 一区亚洲| 亚洲国产二区 | 精品一区二区三区免费 | 少妇久久久久 | 欧美第一页 | 欧美精品在线看 | 四虎成人免费电影 | 午夜爱爱毛片xxxx视频免费看 | 波多野结衣一二三 | 精品视频一区二区三区 | 亚洲日韩欧美一区二区在线 | 亚洲欧美一区二区三区在线 | 黄色免费视频 | 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 亚洲人免费视频 | 欧美中文一区 | 日韩午夜av| 五月婷婷导航 | 欧美成人综合视频 | 欧美一区在线看 | 91电影在线| 久久久999成人 | 我要看a级毛片 | 精品久久久久久久久久久 | av免费网站在线观看 | 欧美日韩一区二区电影 | 日韩免费网站 | 欧美中文字幕在线 | 欧美国产日韩一区二区 | 久久久精选 | 日本一二三区视频 | 国产日韩欧美 | 开操网 | 老黄网站在线观看 | 2018国产大陆天天弄 | 成年人在线看 | 涩涩视频在线免费看 | 亚洲一区视频 | 久久一| 99这里只有精品视频 | 性色视频免费观看 | 国产成人在线播放 | 啪啪tv网站免费入口 | 午夜爱爱毛片xxxx视频免费看 | av色资源 | 欧美久久久久久久久久久久 | 日日操操| 亚洲一区二区伦理 | 日本久久久久久 | 操久久 | 日韩一区二区三区在线视频 | 在线视频一区二区 | 99看片| 色av色av色av| 欧美一级全黄 | 羞羞视频网站 | 中文字幕一区二区三区四区 | 欧美极品视频 | 91国内精品久久 | 国产一区二区精品 | 日韩中文在线 | 国产一区二区三区在线视频 | 精品中文字幕在线观看 | 国产日韩欧美一区 | 欧美不卡一区二区三区 | 色视频一区二区三区 | 日韩视频中文字幕 | 噜噜噜天天躁狠狠躁夜夜精品 | 国产97人人超碰caoprom | 黄色国产一级视频 | 中文字幕日韩欧美一区二区三区 | 国产成人一区二区 | 黄色激情网站 | 亚洲资源在线 | av在线免费观看一区二区 | 国产精品久久久久不卡 | 天堂一区二区三区在线 | 91亚洲成人| www.一区二区 | 欧美成人综合在线 | 免费特级黄毛片 | 欧美日本久久 | 久在线草| 成人免费视频网站在线观看 | 欧美炮房| 欧美三级电影在线播放 | 欧美一区在线视频 | 密室大逃脱第六季大神版在线观看 | 九九热精品在线 | 一区二区在线播放视频 | 国产激情网站 | 久久亚洲二区 | 99re6在线| 国产精品久久久精品 | 欧美国产一区二区三区 | 欧美日韩不卡合集视频 | 欧美日本一区 | 一本色道久久综合狠狠躁篇的优点 | 欧美日韩视频一区二区 | 天天干天天干天天干天天射 | 成年人网站在线免费观看 | 日韩中文字幕在线 | 成人av一区二区三区 | 人人99| 国内福利视频 | 一区二区在线视频 | 亚洲精品久久久久久久久久久久久 | 超碰在线播 | 国产精品美女久久久久aⅴ国产馆 | 久久精品国产免费 | 日韩欧美精品一区二区三区 | 国产视频导航 | 久国产精品 | 国产美女久久久 | 中文av在线免费观看 | 国产一区二区视频在线 | k8久久久一区二区三区 | 日韩毛片免费视频一级特黄 | 欧美一级片在线 | 91精品免费在线观看 | 少妇黄色一级片 | 国产精品中文字幕在线播放 | 日韩电影在线看 | 成人精品福利视频 | 久久社区 | 日韩在线永久免费播放 | 亚洲国产精品一区二区三区 | 成人免费视屏 | 久久久一区二区 | 山岸逢花在线 | 成人欧美一区二区三区白人 | 国产a区 | 性大毛片视频 | 欧美日韩伊人 | 亚洲一区二区伦理 | 精品视频二区 | 成人免费视频网址 | 一区免费 | 91在线免费视频 | 国产精品亚洲欧美日韩一区在线 | 亚洲中出| 国产精品99久久久久久久vr | 日韩视频在线播放 | 日韩精品视频在线播放 | 超碰人人插 | 九九免费在线观看 | 欧美日韩国产一区二区三区不卡 | 青青草久久久 | 夜夜av| 精品国产不卡一区二区三区 | 欧美精品在欧美一区二区少妇 | 欧美日本韩国一区二区三区 | 精品久久一区二区三区 | 免费在线观看成年人视频 | www.99精品 | 久久综合一区二区三区 | 亚洲综合国产 | 久久av一区二区三区 | 91一区二区| 久久草视频 | 亚洲国产精品久久久 | 午夜影晥 | 在线观看欧美日韩 | 91精品国产乱码久久久久久 | 欧美日一区 | 日本精品免费 | 亚洲精品1 | 青青久草在线 | 成人免费毛片高清视频 | 国产成人精品午夜 | www.一区二区| 久久精品一区二区三区四区 | 欧美一级大片免费 | 国产精品美女久久久久aⅴ国产馆 | 91久久综合亚洲鲁鲁五月天 | 美女精品视频 | 亚洲 欧美 日韩 丝袜 另类 | 亚洲国产日本 | 久久久久久久一区 | 日韩手机在线观看 | 欧美一级黄视频 | 国产99热| 亚洲一区二区三区高清 | 在线看av网址 | 久久99热精品免费观看牛牛 | 亚洲免费人成在线视频观看 | 狠狠操天天操 | 精品久久一区 | 欧美亚洲视频 | 欧美视频网站 | 97成人在线视频 | 亚洲综合色视频在线观看 | 99福利视频 | 少妇看av一二三区 | 欧美日韩一区二区三区四区 | 欧美在线播放 | 成人精品视频99在线观看免费 | 久草 在线 | 日本视频免费高清一本18 | 男女午夜网站 | 欧美日韩专区 | 亚州成人 | 亚洲午夜精品一区二区三区他趣 | 免费日本视频 | 欧美xxxx在线 | 五月婷婷导航 | 午夜剧院官方 | 欧美激情网站 | 欧美一卡二卡在线观看 | 污视频在线观看免费 | 亚洲综合色视频在线观看 | 成人网av | 欧美日黄 | 国厂毛片 | 成人免费淫片aa视频免费 | 日本黄a三级三级三级 | 久久久国产精品视频 | hd国产人妖ts另类视频 | 在线涩涩| 中文字幕在线视频一区 | 日韩一级av毛片 | 中文字幕1区 | 欧美日韩不卡在线 | 成人久久久| 理论片87福利理论电影 | 禁果av一区二区三区 | 免费黄色av | 日韩综合一区 | 日本久久网 | 成人做爰www免费看视频网站 | 亚洲欧美激情在线 | 久久综合伊人 | 在线观看免费黄色 | 欧美成a | 国产视频一区二区在线 | 五月天婷婷在线视频 | 欧美日韩视频在线观看免费 | 日日干天天干 | 在线播放一级片 | 超碰免费观看 | 亚洲高清在线视频 | 国产在线一区二区三区 | 精品久久久久久久 | 国产精品大片 | www.av在线播放 | 欧美激情首页 | 精品人伦一区二区三区蜜桃视频 | 九色av| 欧美日韩一区在线观看 | 婷婷桃色网 | 日韩亚洲欧美综合 | 欧美日韩视频 | 色综合久久久久综合99 | 国产精品一二三 | 欧美日韩国产一区二区三区 | 久久精品国产v日韩v亚洲 | 亚洲欧洲自拍 | 亚洲精品久久久久午夜 | 亚洲黄色一区二区三区 | 日本黄色的视频 | 欧美日韩一区二区三区免费视频 | 激情久久av一区av二区av三区 | 国产亚洲一区二区三区在线观看 | 一区二区三区免费 | 日韩在线欧美 | 成人av网页 | 国产精品一区二区在线观看 | 啪啪毛片 | 成人妇女免费播放久久久 | 一区二区三区国产在线观看 | 伊人精品影院 | 久久久精品久久久久久 | 国产精品视频入口 | 精品护士一区二区三区 | 99re在线视频 | 日韩高清成人 | 久久午夜视频 | 国产精久| 久久国产一区 | 久草免费福利 | 天天操网 | 精品欧美一区二区在线观看视频 | 麻豆一区二区三区 | 欧美精品国产精品 | 国产高清视频在线 | 91欧美在线 | 国产综合视频 | 国产精品久久久久久久久 | 日韩国产欧美视频 | 999国内精品永久免费视频 | 久久精精品 | 精品成人一区二区 | 中文字幕视频在线 | 91人人| 日本久久久久久久久 | 国产亚洲精品成人av久久ww | 国产精品福利在线观看 | 玖玖在线精品 | 99国产精品99久久久久久 | 成人av网站免费观看 | 男女视频免费在线观看 | 国产在线专区 | 北条麻妃一区二区三区在线 | 国产欧美综合视频 | 久久成人一区二区 | 亚洲一区二区三区精品视频 | 国产成人精品久久二区二区 | 男女羞羞视频免费在线观看 | 韩国成人精品a∨在线观看 国产伊人av | 成人看的免费视频 | 天天操天天插 | 欧美女优在线视频 | 欧美日韩国产一区二区三区在线观看 | 午夜影院在线观看版 | 色婷婷国产精品久久包臀 | 免费视频久久久久 | 91激情在线 | 中文字幕国产一区 | 久久久久久综合 | 国产成人精品午夜视频免费 | 亚洲欧美日韩精品 | 婷婷丁香激情 | 91在线视频在线 | 亚洲天堂男人 | 成人精品国产一区二区4080 | 91欧美在线| 精品视频二区 | 成人精品在线 | 国产精品一区欧美 | 亚洲不卡在线 | 国产成人福利在线 | 亚洲精品国产区 | 亚洲精品综合 | h免费在线 | 99久久精品国产毛片 | 91精品国产91综合久久蜜臀 | 中文字幕欧美日韩一区 | 日韩欧美综合 | 中文字幕在线观看精品视频 | 欧美精品在线观看 | 国产综合精品 | 亚洲精品久久久久久久久久 | 国产一区二区三区免费视频 | 亚洲二区在线播放 | 成人a在线视频 | 91网站免费 | 午夜视频网| 日本成年人免费网站 | 超碰激情| 精品一区视频 | 日韩福利在线 | 七龙珠z普通话国语版在线观看 | 99久久免费精品国产男女性高好 | 国产精品欧美一区二区三区不卡 | 一级欧美 | 夜夜av| 午夜国产精品视频 | 亚洲成人久久久 | 国产日韩精品一区二区 | 精品国产乱码一区二区三 | 夜夜春精品视频高清69式 | 日韩欧美久久 | 99热首页 | 日本久久精品电影 | 一级片视频在线观看 | 一区二区三区自拍 | 精品一区二区三区国产 | 精品国产乱码久久久久久闺蜜 | 久久成人免费视频 | 日韩精品成人 | 欧美日韩综合精品 | 国产一区二区久久 | 黄色免费网站观看 | 国产精品国产精品国产专区不片 | 午夜精品福利一区二区三区蜜桃 | 91精品国产乱码久久久久久久久 | 九色91在线 | 97成人在线免费视频 | 午夜成人免费电影 | 国产一区二区在线播放 | 精品免费一区二区 | 91免费观看 | 欧美一级毛片免费观看 | 日韩在线播放视频 | 国产一级片一区二区三区 | 色欧美视频 | 国产日韩欧美精品一区二区三区 | 国产精品久久久 | 成人深夜在线观看 | 亚洲精品久久久久久久久 | 国产精品自产拍在线观看 | 人人干人人干 | 久久中文字幕一区 | 日本啪啪网站 | 国产精品网站在线观看 | 欧美久久久精品 | 免费一级片 | 先锋av资源网 | 日本天天色 | av在线干 | 韩日视频在线观看 | 国产99久久 | 国产ts余喵喵和直男多体位 | 欧美精品一区二区三区免费视频 | 九色91视频 | 国产精品国产精品国产专区不蜜 | 毛片入口 | 亚洲欧美在线观看 | 狠狠av| 7878www免费看片 | 最近免费中文字幕大全免费版视频 | 久久av免费| 日韩在线观看视频免费 | 亚洲中午字幕 | 日韩视频在线观看 | 日韩欧美国产一区二区三区 | 在线观看的av | 奇米av在线 | 日韩视频在线观看不卡 | 一区二区三区四区视频 | 亚洲成人网络 | 色婷婷精品国产一区二区三区 | √8天堂资源地址中文在线 成人欧美一区二区三区白人 | 欧美午夜寂寞影院 | 夜夜草视频 | 久草 在线 | 国产精品久久久久久久久免费桃花 | 免费看毛片网 | 中文字幕亚洲视频 | a在线免费观看 | 狠狠综合久久av一区二区老牛 | 日韩欧美在线免费观看 | 亚州精品天堂中文字幕 | 国产精品久久久久久吹潮 | 中文字幕三区 | 在线观看免费国产 | 美女视频黄a | 欧美国产日本一区 | 国产成人免费 | 日韩欧美一区二区三区久久婷婷 | 亚洲精品久久久久久动漫 | 91电影院 | 亚洲天堂一区二区 | 欧洲一区在线 | 亚洲精品视频在线观看免费 | 国产精品美女久久久久aⅴ国产馆 | 国产日韩欧美在线 | 九色一区 | 海外中文字幕在线观看 | 爱爱网址 | 久久成人综合网 | 99国产精品99久久久久久 | 午夜看片在线观看 | 欧美日韩一区二区电影 | 中文字幕在线视频一区 | 成人国产精品一级毛片视频 | av中文字幕在线 | 亚洲欧洲一区二区 | 久久精品一区 | 高清一区二区三区 | 国产不卡视频在线观看 | 亚洲综合精品 | 亚洲成人日本 | 精久久久 | 日日想日日干 | 国产主播一区 | gogo熟少妇大胆尺寸 | 蜜臀91精品国产高清在线观看 | 欧美日本国产一区 | 国产精品视频一区二区免费不卡 | 自拍偷拍在线视频 | 久久国产精品视频 | 国产91综合一区在线观看 | 精品久久久久久久久久久 | 精品96久久久久久中文字幕无 | 麻豆免费短视频 | 日韩免费一区二区 | 高清国产午夜精品久久久久久 | 成年人视频在线免费观看 | 国产视频一区在线 | 国产精品视频一区二区三区不卡 | 黄色永久网站 | 91一区二区在线 | 欧美顶级毛片在线播放 | 山岸逢花在线观看 | 天天爽天天干 | 一区二区三区免费av | 一区二区三区免费看 | 国产美女www | 中文字幕一区二区三区乱码图片 | 日本 国产 欧美 | 久久综合九色综合欧美狠狠 | 成人精品在线视频 | 一区二区蜜桃 | 国产精品视频久久 | 一级一级一级毛片 | 日韩成人一级片 | 国产中文 | 91久久国产综合久久蜜月精品 | 亚洲免费a | 免费一级在线观看 | 操操日| 午夜网址 | 欧美精品1区 | 蜜桃av一区二区三区 | 久久在线播放 | 免费av一区二区三区 | 国产韩国精品一区二区三区 | 久久社区| 久久亚洲视频 | 亚洲a网 | 精品视频在线免费观看 | 999视频| 亚洲精品一区二三区不卡 | 91亚洲一区 | 国产高清美女一级a毛片久久 | 在线视频一区二区三区 | 中文字幕91 | 欧美一级爆毛片 | 91在线精品视频 | 色婷婷网| 欧美一区二区三区视频 | 国产欧美一区二区三区在线看 | 欧美在线观看一区 | 国产人成精品一区二区三 | 日韩欧美在线播放视频 | 日韩欧美在线视频免费观看 | 99久久精品免费 | 精品久久久久久国产 | 成人在线 | 在线观看免费的av | 狠狠干狠狠操 | 日韩美女爱爱 | 欧洲毛片 | 久久久久久久av | 伊人久久艹 | 精品久久久久久久久久久久 |