sessions

package
v0.0.0-...-d31700d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2022 License: MIT Imports: 1 Imported by: 0

README

sessions

http sessions. now there is only cookie store, we will add redis store later.

Usage

package example

import (
	"fmt"
	"net/http"

	"gitee.com/go-better/dev/net/session/cookiestore"
)

var cookie = &http.Cookie{
	Name:   "session",
	MaxAge: 86400 * 30,
}
var cookieStore = cookiestore.New("XXXX")

type Session struct {
	UserId   int
	UserName string
}

func GetSession(req *http.Request) *Session {
	ck, err := req.Cookie(cookie.Name)
	if err != nil {
		fmt.Println("get cookie error:", err)
		return nil
	}
	if ck == nil || ck.Value == "" {
		return nil
	}
	ck.MaxAge = cookie.MaxAge

	var data Session
	if err := cookieStore.Get(ck, &data); err != nil {
		fmt.Println("get session error:", err)
		return nil
	}
	return &data
}

func SaveSession(rw http.ResponseWriter, data interface{}) {
	err := cookieStore.Save(rw, cookie, data)
	if err != nil {
		fmt.Println("save session error:", err)
	}
}

func DeleteSession(rw http.ResponseWriter) {
	cookieStore.Delete(rw, cookie)
}

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Store

type Store interface {
	Get(ck *http.Cookie, pointer interface{}) error
	Save(res http.ResponseWriter, ck *http.Cookie, data interface{}) error
	Delete(res http.ResponseWriter, ck *http.Cookie)
}
Example (AssertCookieStore)
var cs interface{} = cookiestore.New("")
if _, ok := cs.(Store); ok {
	fmt.Println("ok")
}
Output:

ok

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL