本文整理汇总了Golang中github.com/ursiform/forest.App.SetCookie方法的典型用法代码示例。如果您正苦于以下问题:Golang App.SetCookie方法的具体用法?Golang App.SetCookie怎么用?Golang App.SetCookie使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/ursiform/forest.App
的用法示例。
在下文中一共展示了App.SetCookie方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SessionGet
func SessionGet(app *forest.App, manager SessionManager) func(ctx *bear.Context) {
return func(ctx *bear.Context) {
cookieName := forest.SessionID
createEmptySession := func(sessionID string) {
path := app.Config.CookiePath
if path == "" {
path = "/"
}
cookieValue := sessionID
duration := app.Duration("Cookie")
// Reset the cookie.
app.SetCookie(ctx, path, cookieName, cookieValue, duration)
manager.CreateEmpty(sessionID, ctx)
ctx.Next()
}
cookie, err := ctx.Request.Cookie(cookieName)
if err != nil || cookie.Value == "" {
createEmptySession(uuid.New())
return
}
sessionID := cookie.Value
userID, userJSON, err := manager.Read(sessionID)
if err != nil || userID == "" || userJSON == "" {
createEmptySession(uuid.New())
return
}
if err := manager.Create(sessionID, userID, userJSON, ctx); err != nil {
println(fmt.Sprintf("error creating session: %s", err))
defer func(sessionID string, userID string) {
if err := manager.Delete(sessionID, userID); err != nil {
println(fmt.Sprintf("error deleting session: %s", err))
}
}(sessionID, userID)
createEmptySession(uuid.New())
return
}
// If SessionRefresh is set to false, the session will not refresh;
// if it's not set or if it's set to true, the session is refreshed.
refresh, ok := ctx.Get(forest.SessionRefresh).(bool)
if !ok || refresh {
path := app.Config.CookiePath
if path == "" {
path = "/"
}
cookieName := forest.SessionID
cookieValue := sessionID
duration := app.Duration("Cookie")
// Refresh the cookie.
app.SetCookie(ctx, path, cookieName, cookieValue, duration)
err := manager.Update(sessionID, userID,
userJSON, app.Duration("Session"))
if err != nil {
println(fmt.Sprintf("error updating session: %s", err))
}
}
ctx.Next()
}
}