User Login
CreateNewSession
function: API Reference
Call the supertokens.CreateNewSession(w http.ResponseWriter, userID string) (supertokens.Session, error)
supertokens.CreateNewSession(c *c.Context, userID string) (supertokens.Session, error)
- This will attach all relevant cookies and header to the response.
Add JWT payload
// jwtPayload is a map[string]interface{}
supertokens.CreateNewSession(w, "user1", jwtPayload)
// jwtPayload is a map[string]interface{}
supertokens.CreateNewSession(c, "user1", jwtPayload)
jwtPayload
should not contain any sensitive information.
Add session data
// jwtPayload is nil here
// sessionData is a map[string]interface{}
supertokens.CreateNewSession(w, "user1", nil, sessionData)
// jwtPayload is nil here
// sessionData is a map[string]interface{}
supertokens.CreateNewSession(c, "user1", nil, sessionData)
sessionData
is stored in your database and can contain any information.
Example
import "github.com/supertokens/supertokens-go/supertokens"
http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
// ...check for user credentials
userID := "user1"
jwtPayload := map[string]interface{}{
"role": "admin",
}
sessionData := map[string]interface{}{
"awesomeThings": "programming",
}
session, err := supertokens.CreateNewSession(w, userID, jwtPayload, sessionData)
if err != nil {
supertokens.HandleErrorAndRespond(err, w)
return
}
w.Write([]byte("login successful: " + session.GetUserID()))
})
import "github.com/supertokens/supertokens-go/gin/supertokens"
r.POST("/login", func(c *gin.Context) {
// ...check for user credentials
userID := "user1"
jwtPayload := map[string]interface{}{
"role": "admin",
}
sessionData := map[string]interface{}{
"awesomeThings": "programming",
}
session, err := supertokens.CreateNewSession(c, userID, jwtPayload, sessionData)
if err != nil {
supertokens.HandleErrorAndRespond(err, c)
return
}
c.JSON(http.StatusOK, gin.H{
"msg": "login successful: " + session.GetUserID(),
})
})