2 回答

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊
Cookie 用于標(biāo)識會話或存儲會話數(shù)據(jù),具體取決于所使用的會話存儲。同一瀏覽器實例中的兩個隱身窗口共享相同的 Cookie,因此將共享相同的會話。請嘗試以下操作之一:比較不同瀏覽器實例中的會話(有關(guān)如何啟動單獨的實例,請參閱瀏覽器命令行幫助),比較隱身和非隱身之間的會話,比較 Edge 和 Chrome 之間的會話。

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊
會話變量包含多個數(shù)據(jù),包括會話開始時間。興趣 確定會話的結(jié)束時間。這意味著會話令牌即使在同一瀏覽器和某些窗口上也有所不同。因為同一用戶不能同時登錄多次。但是,所有瀏覽器仍然都知道這一點。因為它為同一用戶攜帶相同的數(shù)據(jù),例如唯一的名稱或電子郵件。
sess,_ := session.Get ("session-name", c)用于會話類型。僅當(dāng)您有多種類型的會話時,才動態(tài)設(shè)置它。
sess.Values ["email"] = email用于查找誰與用戶有關(guān)聯(lián)?這些必須動態(tài)確定。它使用唯一值(如電子郵件或 Id)進(jìn)行設(shè)置??梢源鎯σ幌盗袛?shù)據(jù)來自定義用戶體驗。例如:姓名、顏色、語言。他們建議不要存儲密碼。它加密敏感數(shù)據(jù)。設(shè)置前。
這是一個簡單的大猩猩會話:
func initSession(c echo.Context, name, email string) {
sess, _ := session.Get("session-name", c) // session_name like: addmin_sess of user_ses or onything.
sess.Options = &sessions.Options{
Path: "/",
MaxAge: 216000, // = 1h,
HttpOnly: true, // no websocket or any protocol else
}
sess.Values["email"] = email // nessessary in this senario
sess.Save(c.Request(), c.Response())
}
func login(c echo.Context) error {
formEmail := c.FormValue("email")
formPass := c.FormValue("password")
email, pass := getUsername(formEmail) // "select email pass from UserTable where email_field == formEmail"
if pass == formPass && email == formEmail {
initSession(c, email) // set session of this uniq user in browser.
return c.Redirect(http.StatusSeeOther, "/") // login success.
}
return c.Render(200, "login.html", "Username or password is wrong")
}
用戶在未登錄的情況下無法訪問<配置文件頁>:
func profilePage(c echo.Context) error {
sess, _ := session.Get("session_name", c)
email := sess.Values["email"] // we get email from browser.
if email == nil {
return c.Redirect(http.StatusSeeOther, "/login") // login firs.
}
return c.Render(200, "profile.html", email) // just show email
}
- 2 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報