아이리스와gorilla/sessions로 세션 관리
제가 카운터를 만들어 봤어요.방문 up 후 1 상승, 방문/cl 후 삭제.
코드
main.go
package main
import (
"github.com/kataras/iris"
"github.com/kataras/iris/context"
"github.com/gorilla/sessions"
"fmt"
)
var store = sessions.NewCookieStore([]byte("hoge"))
var sess_name = "sess"
func main() {
app := iris.New()
app.Get("/", topPage)
app.Get("up", upPage)
app.Get("cl", clearPage)
app.Run(iris.Addr(":8080"))
}
func topPage (ctx context.Context) {
f := getFlash(ctx)
cnt := fmt.Sprintf(
"<h2>count is %d</h2>",
getCount(ctx),
)
html := `<br><a href="/up">Count Up</a>
<br><a href="/cl">Count Clear</a>`
ctx.HTML(f + cnt + html)
}
func upPage (ctx context.Context) {
countUp(ctx)
addFlash(ctx, "count up")
ctx.Redirect("/")
}
func clearPage (ctx context.Context) {
sessClear(ctx)
addFlash(ctx,"session clear")
ctx.Redirect("/")
}
session.gopackage main
import (
"github.com/kataras/iris/context"
"fmt"
)
func getCount(ctx context.Context) int {
sess, _ := store.Get(ctx.Request(), sess_name)
cnt := 0
if v, ok := sess.Values["cnt"]; ok {
if c, ok := v.(int); ok {
cnt = c
}
}
return cnt
}
func countUp(ctx context.Context) {
sess, _ := store.Get(ctx.Request(), sess_name)
cnt := 1
if v, ok := sess.Values["cnt"]; ok {
if c, ok := v.(int); ok {
cnt = c + 1
}
}
sess.Values["cnt"] = cnt
sess.Save(ctx.Request(), ctx.ResponseWriter())
}
func sessClear(ctx context.Context) {
sess, _ := store.Get(ctx.Request(), sess_name)
sess.Values = make(map[interface{}]interface{})
sess.Save(ctx.Request(), ctx.ResponseWriter())
}
func getFlash(ctx context.Context) string {
sess, _ := store.Get(ctx.Request(), sess_name)
f := sess.Flashes()
sess.Save(ctx.Request(), ctx.ResponseWriter())
if len(f) > 0 {
return fmt.Sprintf(
`<p style="color:#090;padding:5px;">%s</p>`,
f[0],
)
}
return ""
}
func addFlash(ctx context.Context, msg string) {
sess, _ := store.Get(ctx.Request(), sess_name)
sess.AddFlash(msg)
sess.Save(ctx.Request(), ctx.ResponseWriter())
}
스크린
Reference
이 문제에 관하여(아이리스와gorilla/sessions로 세션 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/edo1z/items/ff47d04b6cdd4b0de64c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)