2016-09-15 4 views
6

私のレールアプリは、認可のためにユーザーの資格情報を保存するためにセッションを使用します。 Goコードでサインインして、ユーザーセッションが必要な操作を実行しようとしています。サインイン時にユーザーセッションを取得して、次のリクエストに渡す必要がありますか?どうすればそれを処理できますか?ゴールンでセッション値を取得

答えて

7

Goの標準ライブラリには、HTTPセッションマネージャが用意されていません。だからあなたは自分で書くか、他の人が書いたものを使う必要があります。

いくつかの例: - :

  • https://github.com/gorilla/sessionsGorilla web toolkitの一部)
  • 通常のHTTPセッションが管理されている

    • https://github.com/icza/sessionは(私が作者だ開示)GoogleのApp Engineのサポートが含まれていますサーバとクライアントの間のクッキーを介して、セッション(セッションID)はリクエスト(http.Request)から直接取得することができます。 Request.Cookie()である。

      「リクエストチェーン」を介してセッションを「パス」する必要はないと言われていますが、すべてのハンドラはhttp.Requestを持つだけでアクセスできます。例えば

      それは次のように行うことができますgithub.com/icza/sessionを使用して:

      Gorilla sessionsを使用して
      func MyHandler(w http.ResponseWriter, r *http.Request) { 
          sess := session.Get(r) 
          if sess == nil { 
           // No session (yet) 
          } else { 
           // We have a session, use it 
          } 
      } 
      

      、それは似ています:

      var store = sessions.NewCookieStore([]byte("something-very-secret")) 
      
      func MyHandler(w http.ResponseWriter, r *http.Request) { 
          session, err := store.Get(r, "session-name") 
          if err != nil { 
           http.Error(w, err.Error(), http.StatusInternalServerError) 
           return 
          } 
          // Use session 
      } 
      
    関連する問題