Skip to content

powerpuffpenguin/sessionid_server

Repository files navigation

sessionid_server

Token server implemented using github.com/powerpuffpenguin/sessionid

Support http and grpc interfaces

  • grpc -> Please see the proto definition
  • http -> Browser access /document/ to get swagger

client

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/powerpuffpenguin/sessionid"
	"github.com/powerpuffpenguin/sessionid_server/client"
	"google.golang.org/grpc"
)

func main() {
	runGRPC()
}

type User struct {
	ID   int
	Name string
}

func runGRPC() {
	cc, e := grpc.Dial(
		`127.0.0.1:9000`,
		grpc.WithInsecure(),
	)
	if e != nil {
		log.Fatalln(e)
	}
	var manager sessionid.Manager = client.NewManager(cc, sessionid.JSONCoder{})
	ctx := context.Background()
	session, refresh, e := manager.Create(ctx, `1`, sessionid.Pair{
		Key: `user`,
		Value: User{
			ID:   123,
			Name: `kate`,
		},
	})
	if e != nil {
		log.Fatalln(e)
	}
	fmt.Println(`access`, session.Token())
	fmt.Println(`refresh`, refresh)
	var user User
	session.Get(ctx, `user`, &user)
	fmt.Println(user)
}