成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用的流程(用戶名密碼和圖形驗(yàn)證碼)

Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用的流程(用戶名密碼和圖形驗(yàn)證碼)

熱門標(biāo)簽:400開頭電話怎樣申請(qǐng) 貴州電話智能外呼系統(tǒng) 江蘇呼叫中心外呼系統(tǒng)有效果嗎 官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 赤峰電銷 地圖區(qū)域圖標(biāo)注后導(dǎo)出 杭州人工智能電銷機(jī)器人費(fèi)用 谷歌美發(fā)店地圖標(biāo)注 利用地圖標(biāo)注位置

圖形化驗(yàn)證碼生成和驗(yàn)證

功能介紹

在使用用戶名和密碼登錄功能時(shí),需要填寫驗(yàn)證碼,驗(yàn)證碼是以圖形化的方式進(jìn)行獲取和展示的。

驗(yàn)證碼使用原理

驗(yàn)證碼的使用流程和原理為:在服務(wù)器端負(fù)責(zé)生成圖形化驗(yàn)證碼,并以數(shù)據(jù)流的形式供前端訪問獲取,同時(shí)將生成的驗(yàn)證碼存儲(chǔ)到全局的緩存中,在本案例中,我們使用redis作為全局緩存,并設(shè)置緩存失效時(shí)間。當(dāng)用戶使用用戶名和密碼進(jìn)行登錄時(shí),進(jìn)行驗(yàn)證碼驗(yàn)證。驗(yàn)證通過即可繼續(xù)進(jìn)行登錄。

驗(yàn)證碼庫安裝

借助開源的驗(yàn)證碼工具庫可以生成驗(yàn)證碼。
首先,安裝開源的驗(yàn)證碼生成庫:

go get -u github.com/mojocn/base64Captcha
go get github.com/mojocn/base64Captcha@v1.2.2

驗(yàn)證碼代碼示例

在下載后的base64Captcha庫的目錄中,可以看到有_example和_example_redis兩個(gè)目錄。第一個(gè)example是用于演示生成驗(yàn)證碼和驗(yàn)證碼的示例代碼。

按照示例代碼的說明,運(yùn)行程序并在瀏覽器進(jìn)行端口訪問:

go run main.go
//瀏覽器中訪問:http://localhost:8777

如下圖所示:

通過自定義配置,可以選擇不同的生成驗(yàn)證碼的參數(shù),并刷新驗(yàn)證碼,同時(shí)還可以對(duì)驗(yàn)證碼進(jìn)行驗(yàn)證。

通過exmaple目錄下的main.go程序可以看到生成驗(yàn)證碼和驗(yàn)證驗(yàn)證碼的邏輯,此處不再贅述。

項(xiàng)目集成驗(yàn)證碼生成和Redis緩存

通常來說,驗(yàn)證碼都是有一定的實(shí)效性的,過期驗(yàn)證碼也就無效了。

因此,我們考慮在項(xiàng)目中引入Redis作為數(shù)據(jù)緩存。當(dāng)驗(yàn)證碼生成后,將驗(yàn)證碼存放在Redis中,并根據(jù)配置文件對(duì)Redis進(jìn)行設(shè)置。

安裝go-redis庫

在項(xiàng)目中使用redis,需要安裝go-redis庫,可以在https://github.com/go-redis/redis中查看如何下載go-redis和配置。

增加Redis配置

在配置文件app.json中新增redis配置:

"redis_config": {
 "addr": "127.0.0.1",
 "port": "6379",
 "password": "",
 "db": 0
}

同時(shí),新增RedisConfig結(jié)構(gòu)體定義,如下所示:

type RedisConfig struct {
	Addr string `json:"addr"`
	Port string `json:"port"`
	Password string `json:"password"`
	Db int `json:"db"`
}

Redis初始化操

進(jìn)行了redis配置以后,需要對(duì)redis進(jìn)行初始化??梢苑庋bredis初始化操作函數(shù)如下所示:

type RedisStore struct {
	redisClient *redis.Client
}

var Redis *redis.Client

func InitRediStore() *RedisStore {
	config := GetConfig().RedistConfig

	Redis = redis.NewClient(redis.Options{
		Addr:  config.Addr + ":" + config.Port,
		Password: config.Password,
		DB:  config.Db,
	})

	customeStore := RedisStore{Redis}
	base64Captcha.SetCustomStore(customeStore)

	return customeStore
}

同時(shí),為customeStore提供Set和Get兩個(gè)方法,如下所示:

func (cs *RedisStore) Set(id string, value string) {
	err := cs.redisClient.Set(id, value, time.Minute*2).Err()
	if err != nil {
		log.Println(err.Error())
	}
}

func (cs *RedisStore) Get(id string, clear bool) string {
	val, err := cs.redisClient.Get(id).Result()
	if err != nil {
		toolbox.Error(err.Error())
		return ""
	}
	if clear {
		err := cs.redisClient.Del(id).Err()
		if err != nil {
			toolbox.Error(err.Error())
			return ""
		}
	}
	return val
}

對(duì)Redis進(jìn)行初始化和定義完成以后,需要在main中調(diào)用一下初始化操作InitRediStore:

func main(){
 ...
 //Redis配置初始化
	 toolbox.InitRediStore()
 ...
}

驗(yàn)證碼生成和驗(yàn)證

本項(xiàng)目中采用的驗(yàn)證碼的生成庫支持三種驗(yàn)證碼,分別是:audio,character和digit。我們選擇character類型。

定義Captcha.go文件,實(shí)現(xiàn)驗(yàn)證碼的生成和驗(yàn)證碼函數(shù)的定義。在進(jìn)行驗(yàn)證碼生成時(shí),默認(rèn)提供驗(yàn)證碼的配置,并生成驗(yàn)證碼后返回給客戶端瀏覽器。如下是生成驗(yàn)證碼的函數(shù)定義:

//生成驗(yàn)證碼
func GenerateCaptchaHandler(ctx *gin.Context) {
	//圖形驗(yàn)證碼的默認(rèn)配置
	parameters := base64Captcha.ConfigCharacter{
		Height:    60,
		Width:    240,
		Mode:    3,
		ComplexOfNoiseText: 0,
		ComplexOfNoiseDot: 0,
		IsUseSimpleFont: true,
		IsShowHollowLine: false,
		IsShowNoiseDot:  false,
		IsShowNoiseText: false,
		IsShowSlimeLine: false,
		IsShowSineLine:  false,
		CaptchaLen:   4,
		BgColor: color.RGBA{
			R: 3,
			G: 102,
			B: 214,
			A: 254,
		},
	}

	captchaId, captcaInterfaceInstance := base64Captcha.GenerateCaptcha("", parameters)
	base64blob := base64Captcha.CaptchaWriteToBase64Encoding(captcaInterfaceInstance)

	captchaResult := CaptchaResult{Id: captchaId, Base64Blob: base64blob}

	// 設(shè)置json響應(yīng)
	tool.Success(ctx, map[string]interface{}{
		"captcha_result": captchaResult,
	})
}

驗(yàn)證碼接口解析

圖形化驗(yàn)證碼是用戶名和密碼登錄功能的數(shù)據(jù),屬于Member模塊。因此在MemberController中增加獲取驗(yàn)證碼的接口解析,如下:

func (mc *MemberController) Router(engine *gin.Engine){
 //獲取驗(yàn)證碼
 engine.GET("/api/captcha", mc.captcha)
}

測試結(jié)果如下,能夠正常獲取到數(shù)據(jù):

驗(yàn)證碼的驗(yàn)證

同理,可以對(duì)客戶端提交的驗(yàn)證碼進(jìn)行驗(yàn)證,具體實(shí)現(xiàn)邏輯如下:

//驗(yàn)證驗(yàn)證碼是否正確
func CaptchaVerify(r *http.Request) bool {
	
	var captchaResult CaptchaResult
	//接收客戶端發(fā)送來的請(qǐng)求參數(shù)
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(captchaResult)
	if err != nil {
		log.Println(err)
	}
	defer r.Body.Close()

	//比較圖像驗(yàn)證碼
	verifyResult := base64Captcha.VerifyCaptcha(captchaResult.Id, captchaResult.VertifyValue)

	return verifyResult
}

用戶名密碼登錄功能開發(fā)

功能介紹

上節(jié)課已經(jīng)完成了驗(yàn)證碼的生成,本節(jié)課來開發(fā)用戶名、密碼和驗(yàn)證碼登錄功能。

接口和參數(shù)解析定義

用戶名和密碼的登錄接口為:

/api/login_pwd

接口請(qǐng)求類型為POST,接口參數(shù)有三個(gè):name,pwd,captcha。其中:captcha為驗(yàn)證碼。

定義登錄參數(shù)結(jié)構(gòu)體LoginParam:

//用戶名,密碼和驗(yàn)證碼登錄
type LoginParam struct {
	Name  string    `json:"name"` //用戶名
	Password string    `json:"pwd"` //密碼
	Id  string    `json:"id"`// captchaId 驗(yàn)證碼ID
	Value string    `json:"value"` //驗(yàn)證碼
}

邏輯控制層實(shí)現(xiàn)登錄流程控制

方法解析

在MemberController.go文件中,編寫方法用于處理用戶名密碼登錄的解析方法如下所示:

func (mc *MemberController) Router(engine *gin.Engine){
 engine.POST("/api/login_pwd", mc.nameLogin)
}

登錄流程編程實(shí)現(xiàn)

定義新的func并命名為nameLogin,實(shí)現(xiàn)登錄流程邏輯控制:

//用戶名、密碼登錄
func (mc *MemberController) nameLogin(context *gin.Context) {

	//1、登錄參數(shù)解析
	var loginParam param.LoginParam

	err := toolbox.Decode(context.Request.Body, loginParam)
	if err != nil {
		toolbox.Failed(context, "參數(shù)解析失敗")
		return
	}

	//2、驗(yàn)證驗(yàn)證碼
	service := impl.NewMemberService()
	validate := toolbox.CaptchaVerify(loginParam.Id, loginParam.Value)
	fmt.Println(validate)
	if !validate {
		toolbox.ValidateFailed(context, "驗(yàn)證碼不正確, 請(qǐng)重新驗(yàn)證 ")
		return
	}

	//3、登錄
	member := service.Login(loginParam.Name, loginParam.Password)
	if member.Id == 0 {
		toolbox.Failed(context, "登錄失敗")
		return
	}
	toolbox.Success(context, member)
}

在控制層的nameLogin方法中,主要有3個(gè)邏輯處理:

  • 1、通過*gin.Context解析請(qǐng)求登錄請(qǐng)求攜帶的參數(shù)。
  • 2、從攜帶的參數(shù)中得到提交的驗(yàn)證碼數(shù)據(jù),調(diào)用驗(yàn)證碼判斷驗(yàn)證碼方法對(duì)驗(yàn)證碼進(jìn)行判斷。驗(yàn)證碼驗(yàn)證失敗或者驗(yàn)證碼失效,直接返回登錄失敗信息。
  • 3、使用用戶名、密碼參數(shù)進(jìn)行登錄,判斷登錄結(jié)果。如果登錄成功,返回用戶登錄信息,否則返回登錄失敗。

Service層實(shí)現(xiàn)

在功能服務(wù)層的MemberService文件中,定義和實(shí)現(xiàn)用戶名密碼登錄的Login方法。詳細(xì)實(shí)現(xiàn)如下:

//用戶登錄: 如果沒有登錄過,自動(dòng)進(jìn)行登錄
func (msi *MemberServiceImpl) Login(name string, password string) *model.Member {

	dao := impl.NewMemberDao()

	//1、先查詢是否已經(jīng)存在該用戶
	member := dao.Query(name, password)
	if member.Id != 0 {
		return member
	}

	user := model.Member{}
	user.UserName = name
	user.Password = toolbox.EncoderSha256(password)
	user.RegisterTime = time.Now().Unix()

	result := dao.InsertMember(user)
	user.Id = result
	return user
}

在service層的Login方法中,分為兩步邏輯判斷:

1、先查詢是否已經(jīng)存在該用戶,如果該用于已經(jīng)存在,則直接將查詢到的用戶信息返回。

2、如果用戶不存在,將用戶信息作為新記錄保存到數(shù)據(jù)庫中,新增一條記錄。并返回用戶信息。

最后,涉及到操作數(shù)據(jù)庫的兩個(gè)方法分別是:Query和InsertMember方法。InsertMember方法之前已經(jīng)編寫過,只需要重新編寫一個(gè)Query方法即可,Query方法實(shí)現(xiàn)如下所示:

//根據(jù)用戶名和密碼查詢用戶記錄
func (mdi *MemberDaoImpl) Query(name string, password string) *model.Member {
	var member model.Member

	password = toolbox.EncoderSha256(password)

	_, err := mdi.Where(" user_name = ? and password = ? ", name, password).Get(member)
	if err != nil {
		toolbox.Error(err.Error())
		return nil
	}

	return member
}

到此這篇關(guān)于Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用(用戶名密碼和圖形驗(yàn)證碼)的文章就介紹到這了,更多相關(guān)Go線上外賣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • vue實(shí)現(xiàn)驗(yàn)證用戶名是否可用
  • vue+element-ui集成隨機(jī)驗(yàn)證碼+用戶名+密碼的form表單驗(yàn)證功能
  • Vue驗(yàn)證用戶名是否可用的方法

標(biāo)簽:鷹潭 保定 泰安 河池 宜春 黔西 武漢 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用的流程(用戶名密碼和圖形驗(yàn)證碼)》,本文關(guān)鍵詞  Go+Vue,開發(fā),一個(gè),線上,外賣,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用的流程(用戶名密碼和圖形驗(yàn)證碼)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Go+Vue開發(fā)一個(gè)線上外賣應(yīng)用的流程(用戶名密碼和圖形驗(yàn)證碼)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产成人8x视频一区二区| 国产精品88av| 欧美一级黄色大片| 亚洲成人中文字幕| 久久综合中文色婷婷| 夜夜爽av福利精品导航| 国产精品xxx在线观看| 国产在线拍揄自揄拍视频| 欧美日免费三级在线| 爽爽窝窝午夜精品一区二区| 青青艹视频在线| 一个人看的www在线免费观看| 日本精品久久久久中文| 亚洲国产一区二区三区在线| 久久手机免费观看| 国产98色在线| 亚洲黄色在线视频| 欧美性猛交xxxx黑人交| 免费试看一区| 92福利视频午夜1000合集在线观看| 欧美巨猛xxxx猛交黑人97人| 精品成人av| 老司机2019福利精品视频导航| 男人的天堂一区二区| 国产精品av久久久久久无| 亚洲欧美国产高清| 欧美视频一区二区在线| 97操碰视频| 免费一级suv好看的国产网站| 日本一区二区免费视频| 香蕉久久夜色精品国产更新时间| 浮生影视网在线观看免费| 精品一区二区三区五区六区七区| 日本va欧美va瓶| 国产人成精品| 日本性高潮视频| 中文字幕av在线一区二区三区| 青青操在线观看| 男女啪啪999亚洲精品| 熟女少妇a性色生活片毛片| 日韩激情综合网| 国产精品日本一区二区| 国产亚洲精品久久飘花| 一级毛片在线看| 娇妻被老王脔到高潮失禁视频| 波多野结衣家庭教师在线播放| 免费a级毛片在线播放| 欧美视频在线第一页| 欧美影视一区| 摸摸摸bbb毛毛毛片| 久久精品国产精品亚洲| 日本高清不卡在线观看| 国产精品久久久久久久妇| 精品国产乱码久久久久久郑州公司| 亚洲日本va中文字幕久久| 国产bdsm| 国产91白丝在线播放| 好看的av在线不卡观看| 欧美天堂亚洲电影院在线播放| 在线看国产视频| 北条麻妃99精品青青久久| 狠狠色伊人亚洲综合成人| 中文字幕在线播放| 日韩资源av在线| 偷偷要色偷偷| 精品一区二区日韩| 99精品国产在热久久| 成人综合婷婷国产精品久久| 欧美日韩水蜜桃| 日韩dvd碟片| 亚洲综合自拍| 亚洲人成在线免费观看| 丰满熟女人妻一区二区三| 成人午夜大片免费观看| 最近中文av字幕在线中文| www.成人av.com| 欧美久久一区| 99久热re在线精彩视频| 99热这里只有精品免费| 无罩大乳的熟妇正在播放| 国产成人自拍一区| 91tv亚洲精品香蕉国产一区7ujn| 秋霞成人午夜鲁丝一区二区三区| 精品国产亚洲一区二区三区大结局| 国产女人在线观看| 日韩三级影院| 一区二区国产盗摄色噜噜| 91在线视频免费91| 亚洲日本黄色片| 久久99国产精品久久99小说| 99国产**精品****| 天堂在线观看av| 老司机午夜精品视频| av蓝导航精品导航| 日韩免费不卡视频| 色网在线观看| 亚洲欧洲中文日韩久久av乱码| 欧美xxxx少妇| 波多野结衣片子| 夜夜骑夜夜操| 一区二区不卡在线视频 午夜欧美不卡在| 国产91色在线|| 日本久久二区| 夜夜爽www精品| 日韩欧美精品免费| 亚洲系列中文字幕| 欧美日一区二区三区在线观看国产免| 免费黄在线观看| 欧美性爽视频| 狠狠色狠狠色综合网| aaaa一级片| 四虎影视最新网站入口在线观看| 久久精品亚洲一区二区三区浴池| 久久久精品日韩欧美| www久久精品| 国产在线播放观看| 日本中文字幕在线一区| 免费视频一区二区| 久久精品亚洲牛牛影视| 秋霞午夜理伦电影在线观看| 日韩在线播放av| 色乱码一区二区三在线看| 欧美一区2区三区4区公司二百| 日本中文字幕在线2020| 亚洲美女少妇撒尿| 精品国产av一区二区三区| 亚洲理论在线a中文字幕| 欧美一区二区私人影院日本| 大桥未久恸哭の女教师| 成人亚洲免费视频| 91淫黄看大片| 夜夜操免费视频| 无码人妻丰满熟妇啪啪网站| 欧美精品一区二区三区很污很色的| 二人午夜免费观看在线视频| www黄视频| 影音先锋在线播放| 欧美日本亚洲| 国产精品久久麻豆| 日韩在线观看一区二区| 精品人妻一区二区三区视频| 亚洲欧美视频在线| 欧美一区二区三区激情| xxx在线免费观看| 在线观看免费视频一区| 本网站久久精品| 久久久久久久久免费视频| 一区二区三视频| 亚洲无毛电影| 精品国产一区二区在线| 三级精品视频久久久久| 久久精品国产亚洲aⅴ| 波多野结衣人妻| 进去里视频在线观看| 91精品国产毛片武则天| 不卡视频在线| 日本高清不卡一区二区三区视频| 免费观看一级视频| 男女黄床上色视频| 26uuu久久天堂性欧美| 亚洲免费黄色录像| 国模无码视频一区| 国产7777| 免费在线观看h| 首播影院在线观看免费观看电视| 欧美高清视频手机在在线| 亚洲一二三精品| 国产精欧美一区二区三区蓝颜男同| 中文字幕精品一区二区精品| 日本一区二区三区四区五区六区| 激情视频在线观看免费| 激情小视频网站| 国产精品精品软件视频| 天天躁日日躁狠狠躁欧美巨大小说| aaa黄色大片| 国产这里只有精品| 一区二区三区中文字幕精品精品| 国产精品人人做人人爽| 国产老女人乱淫免费| 天堂久久av| 亚洲欧美日韩第一页| 图片区亚洲欧美小说区| 免费黄网站欧美| 91九色国产社区在线观看| 免费在线视频你懂得| 欧美黄色一区二区三区| 丁香婷婷综合激情| 国产字幕在线观看| 欧美精品手机在线| 国产精品aaaa| 日韩黄色免费观看| 久草在线免费二| 黄色资源在线看| 成人精品视频一区二区| 久久精品亚洲国产| 午夜在线播放| 成人免费看片载| 日韩久久精品一区| 免播放器亚洲一区| 91社区在线观看播放| 久久国产精品一区二区三区四区| 国产精品日韩精品欧美精品| 僵尸再翻生在线观看| 国产精品免费视频二三区| 亚洲91网站| 欧美一级在线| 无码人妻精品一区二区三应用大全| 国产成人a亚洲精品| 天堂视频免费在线观看| av蓝导航精品导航| 国产特级嫩嫩嫩bbb| 97视频在线免费播放| 国产又大又长又粗又黄| 懂色aⅴ精品一区二区三区蜜月| 欧美精品一卡两卡| 视频一区在线免费看| 欧美性xxxxxxx| 日本www高清| 一区二区三区四区视频免费观看| freesex欧美| 国产免费一级片| 在线观看免费电影| 91丝袜呻吟高潮美腿白嫩在线观看| 久久国产精品网站| xxxx视频在线观看| 色噜噜夜夜夜综合网| 天堂在线亚洲视频| 日韩一区中文字幕| 欧美大片aaaa| 人妻一区二区三区免费| 日本美女bbw| 国产成人精品av在线| 黄页在线播放| 欧美视频在线观看免费网址| 欧美精品99久久| 亚洲精品美女在线观看| 大地资源网在线观看免费官网| 日本中文字幕一区二区有码在线| 成人午夜私人影院| 中文字幕一区二区精品| 久久精品国产亚洲av香蕉| 午夜精品一二三区| 色wwwwww| 精品一区二区日本| 日韩簧片在线观看| 欧美日韩国产综合草草| 亚洲裸体xxxx| 九九热在线视频观看| 国产成人夜色高潮福利影视| 国产免费的av| 亚洲欧美综合v| 欧美丝袜丝交足nylons| 日本欧美色图| 日韩福利片在线观看| 亚洲视频自拍偷拍| 综合网日日天干夜夜久久| 亚洲欧洲xxxx| 高清不卡日本v二区在线| 成人激情综合网站| 国内精品免费| 亚洲欧美日韩精品在线| 不许穿内裤随时挨c调教h苏绵| 你懂的视频在线播放| 中文字幕在线国产| 日韩中文字幕欧美| 91精品91| 日韩欧美一级精品久久| 豆国产97在线|亚洲| 久久亚洲精品毛片| 成人精品视频一区二区三区尤物| 成人av网站在线| 黑人精品xxx一区| 禁久久精品乱码| 五月精品在线| 亚洲国产一区二区久久久777| h视频在线观看网站| 亚洲免费视频网站| 久久婷婷影院| 亚洲综合中文字幕68页| 俄罗斯xxxx性全过程| 桥本有菜亚洲精品av在线| 一区二区免费在线观看视频| 日韩欧美在线字幕| a级大片在线观看| 给个网站可以在线观看你懂的| 色猫咪免费人成网站在线观看| 亚洲欧美资源在线| 欧美aaa级| 亚洲a成v人在线观看| 亚洲动漫第一页| 色先锋久久av资源部| 亚洲在线观看视频网站| 国产精品22p| 中文字幕在线永久在线视频2020| 99久久激情视频| 亚洲无人区码一码二码三码| 97人人在线视频| av免费精品一区二区三区| 国产精品国产三级国产普通话三级| 欧美性色欧美a在线播放| 亚洲最大视频网| 波多野结衣免费观看| 国产精品中文字幕在线| 精品久久久久久久久久久久久久久久久| 国模私拍视频| av一卡二卡| 亚洲黄色毛片| 无码人妻aⅴ一区二区三区玉蒲团| 中文字幕无线精品亚洲乱码一区| 黄色一二三区| 中文字幕国产亚洲| 日韩免费成人av| 日本精品一区二区三区在线播放视频| 午夜精品福利一区二区三区蜜桃| 波多野吉衣av| 麻豆精品不卡国产免费看| 日本精品性网站在线观看| 在线色欧美三级视频| 日本女优北野望在线电影| 三区精品视频观看| 日韩的一区二区| 日韩精品视频无播放器在线看| 伊人国产视频| 99国产精品久| 国产女主播在线| 男女啪啪免费观看| 国产综合精品久久久久成人av| 野花视频免费在线观看|