1. 程式人生 > >189-session操作和m2m操作

189-session操作和m2m操作






Cookie 和 session

作用:
一定時間內儲存使用者資料

儲存位置不同
Cookie儲存位置在客戶端
session儲存位置在伺服器

第二個不同
生命週期不同
Cookie能夠設定生存時間
當設定的時間一到的時候,就失效了

session是當瀏覽器關閉的時候
session就失效了


第三個不同
適用場景不同
Cookie 一般安全性要求不高的資料
session 安全性要求高的資料


//設定Cookie
//1.cookie的key
//2.cookie中存放的value
//3.設定生效時間
this.Ctx.SetCookie("username",username,3600*24)


func (this *UserController) ShowLogin(){
userName := 
}


<input type="text" value="{{.userName}}" >




在登入成功的時候,可以給session設定資料
在進入後臺之前,需要查詢一下
session有沒有資料
如果有資料
說明是登入狀態
如果沒有資料
說明不是登入狀態
調回到登入頁面



this.SetSession("username",username);


func (this *UserController) Logout(){
	this.DelSession("userName")
	this.Redirect("/login",302)
}



最近瀏覽人
點選文章之後,新增資料

m2m := o.QueryM2M(&article, "Users")

var user models.User

userName := this.GetSession("userName")

user.UserName=userName.(string)

o.Read(&user,"UserName")

m2m.Add(user)

this.Data["article"]=article




再來一次

	//獲取m2m操作物件
	m2m := o.QueryM2M(&article, "Users")

	//插入使用者物件
	var user models.User
	userName := this.GetSession("userName")
	user.UserName = userName.(string)
	o.Read(&user, "UserName")

	//插入資料
	m2m.Add(user)





現在我們在展示頁面的時候
要把最近瀏覽的user展示出來

//獲取瀏覽記錄
o.LoadRelated(&article,"Users")



還有第二種查詢方法
qs := o.QueryTable("User")
qs.Filter("Users__User__UserName")

qs := o.QueryTable("User")
var users []models.User
qs.Filter("Articles__Article__Id",article.Id).Distinct().All(&users)

//資料傳遞給前端
this.Data["users"]=users