第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大猩猩會話 - 每個用戶的會話

大猩猩會話 - 每個用戶的會話

Go
慕運維8079593 2022-08-01 10:55:22
使用大猩猩會話時,我看到的每個示例都執(zhí)行以下一些變體:    var store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))    func MyHandler(w http.ResponseWriter, r *http.Request) {        // Get a session. We're ignoring the error resulted from decoding an        // existing session: Get() always returns a session, even if empty.        session, _ := store.Get(r, "session-name")        // Set some session values.        session.Values["foo"] = "bar"        session.Values[42] = 43        // Save it before we write to the response/return from the handler.        err := session.Save(r, w)        if err != nil {            http.Error(w, err.Error(), http.StatusInternalServerError)            return        }    }我在我的代碼中也這樣做了,它的工作原理。我感到困惑的是.它是一個硬編碼值,將始終檢索相同的會話。session, _ := store.Get(r, "session-name")為了驗證這一點,我有2個隱身瀏覽器創(chuàng)建一個會話,其中用戶的ID作為會話的值映射中的值。兩個瀏覽器都返回了創(chuàng)建會話的最后一個用戶的值。這對我來說都是有道理的,因為我們對所有內(nèi)容都使用相同的會話名稱。我的問題是以下若要為每個經(jīng)過身份驗證的用戶獲取會話,我是否需要自己動態(tài)設(shè)置會話名稱(可能包含來自經(jīng)過身份驗證的用戶本身的一些信息)?如果是這樣,當(dāng)用戶下次訪問站點并且我需要再次從會話存儲中檢索信息時,我將如何檢索該信息?還是我完全以錯誤的方式思考會議?這是我第一次嘗試用會話來創(chuàng)造一些東西,所以我有一種強烈的感覺,我錯過了一些基本概念。
查看完整描述

2 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

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


查看完整回答
反對 回復(fù) 2022-08-01
?
POPMUISE

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

}


查看完整回答
反對 回復(fù) 2022-08-01
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號