无法获取大猩猩会话。按键值

The problem is, cannot get value from session.Value in another file in the same package

In the controllers.go file

func (c *AuthenticationControllers) AdminLogin() http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json")

          //AUTHENTICATION

        if answer {
            w.Write([]byte("Successful Authenticated!"))

            //1* Create Session

            session, _ := store.Get(r, "session") //SESSION START

            ///Here I've setted true
            session.Values["authenticated"] = true//Successful Authenticated

            sessionToken, _ := uuid.NewV4() //Generate session token

            session.Values["userid"] = sessionToken.String()

            session.Save(r, w)


            //Redirect
            http.Redirect(w, r, "/admin/application", 302)
        } else {
            //http.Redirect(w, r, "/login", 302)

            http.Error(w, http.StatusText(http.StatusForbidden), http.StatusForbidden)
        }

    }
}

IN middleware.go file in the same package

 func (m *AuthenticationMiddleWares) RequiresLogin(handler http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        session, _ := store.Get(r, "session") //!!!

        if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {
            http.Error(w, "Forbidden", http.StatusForbidden)
            return
        }

        handler(w, r)
    }
}


 session.Values["authenticated"] //has nil value, but has to be true after authentification in order to get you access to the route
router.HandleFunc("/admin/applications", authMiddle.RequiresLogin(authContrl.Application()))

What I have done wrong? Why session.Values["authenticated"] returns "nil"

session, _ := store.Get(r, "session") //SESSION START, your session depends on the request r, which is a pointer that is created by the package that calls your controller. If you are calling session from another file, you need to ensure, that it is the same request that is passed into store.Get(). That could be the reason.