mirror of
https://github.com/weloe/token-go.git
synced 2025-10-05 23:46:52 +08:00
feat: add usage example
This commit is contained in:
105
Readme.md
Normal file
105
Readme.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Token-Go
|
||||
|
||||
This library focuses on solving login authentication problems, such as: login, multi-account login, shared token, logout, kickout ...
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
go get github.com/weloe/token-go
|
||||
```
|
||||
|
||||
## Simple Example
|
||||
|
||||
```go
|
||||
import (
|
||||
"fmt"
|
||||
tokenGo "github.com/weloe/token-go"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var enforcer *tokenGo.Enforcer
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
// use default adapter
|
||||
adapter := tokenGo.NewDefaultAdapter()
|
||||
enforcer, err = tokenGo.NewEnforcer(adapter)
|
||||
// enable logger
|
||||
enforcer.EnableLog()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
http.HandleFunc("/user/login", Login)
|
||||
http.HandleFunc("/user/logout", Logout)
|
||||
http.HandleFunc("/user/isLogin", IsLogin)
|
||||
http.HandleFunc("/user/kickout", Kickout)
|
||||
|
||||
log.Fatal(http.ListenAndServe(":8081", nil))
|
||||
}
|
||||
|
||||
func Login(w http.ResponseWriter, req *http.Request) {
|
||||
token, err := enforcer.Login("1", tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Login error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "token: %s\n", token)
|
||||
}
|
||||
|
||||
func Logout(w http.ResponseWriter, req *http.Request) {
|
||||
err := enforcer.Logout(tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Logout error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "logout success")
|
||||
}
|
||||
|
||||
func IsLogin(w http.ResponseWriter, req *http.Request) {
|
||||
login, err := enforcer.IsLogin(tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "IsLogin() = %v: %v", login, err)
|
||||
}
|
||||
fmt.Fprintf(w, "IsLogin() = %v", login)
|
||||
}
|
||||
|
||||
func Kickout(w http.ResponseWriter, req *http.Request) {
|
||||
err := enforcer.Kickout(req.URL.Query().Get("id"), "")
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "logout success")
|
||||
}
|
||||
```
|
||||
|
||||
## Custom TokenConfig
|
||||
|
||||
```go
|
||||
import (
|
||||
"fmt"
|
||||
tokenGo "github.com/weloe/token-go"
|
||||
"github.com/weloe/token-go/config"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var enforcer *tokenGo.Enforcer
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
// use default adapter
|
||||
adapter := tokenGo.NewDefaultAdapter()
|
||||
tokenConfig := &config.TokenConfig{
|
||||
TokenName: "uuid",
|
||||
Timeout: 60,
|
||||
IsReadCookie: true,
|
||||
IsReadHeader: true,
|
||||
IsReadBody: false,
|
||||
IsConcurrent: true,
|
||||
IsShare: true,
|
||||
MaxLoginCount: -1,
|
||||
}
|
||||
enforcer, err = tokenGo.NewEnforcer(tokenConfig, adapter)
|
||||
}
|
||||
```
|
||||
|
61
examples/http-server.go
Normal file
61
examples/http-server.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
tokenGo "github.com/weloe/token-go"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var enforcer *tokenGo.Enforcer
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
// use default adapter
|
||||
adapter := tokenGo.NewDefaultAdapter()
|
||||
enforcer, err = tokenGo.NewEnforcer(adapter)
|
||||
// enable logger
|
||||
enforcer.EnableLog()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
http.HandleFunc("/user/login", Login)
|
||||
http.HandleFunc("/user/logout", Logout)
|
||||
http.HandleFunc("/user/isLogin", IsLogin)
|
||||
http.HandleFunc("/user/kickout", Kickout)
|
||||
|
||||
log.Fatal(http.ListenAndServe(":8081", nil))
|
||||
}
|
||||
|
||||
func Login(w http.ResponseWriter, req *http.Request) {
|
||||
token, err := enforcer.Login("1", tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Login error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "token: %s\n", token)
|
||||
}
|
||||
|
||||
func Logout(w http.ResponseWriter, req *http.Request) {
|
||||
err := enforcer.Logout(tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Logout error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "logout success")
|
||||
}
|
||||
|
||||
func IsLogin(w http.ResponseWriter, req *http.Request) {
|
||||
login, err := enforcer.IsLogin(tokenGo.NewHttpContext(req, w))
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "IsLogin() = %v: %v", login, err)
|
||||
}
|
||||
fmt.Fprintf(w, "IsLogin() = %v", login)
|
||||
}
|
||||
|
||||
func Kickout(w http.ResponseWriter, req *http.Request) {
|
||||
err := enforcer.Kickout(req.URL.Query().Get("id"), "")
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "error: %s\n", err)
|
||||
}
|
||||
fmt.Fprintf(w, "logout success")
|
||||
}
|
@@ -23,7 +23,7 @@ func (d *DefaultLogger) Login(loginType string, id interface{}, tokenValue strin
|
||||
if !d.enable {
|
||||
return
|
||||
}
|
||||
log.Printf("LoginByModel: loginId = %v, loginType = %v, tokenValue = %v, "+
|
||||
log.Printf("Login: loginId = %v, loginType = %v, tokenValue = %v, "+
|
||||
"loginMode = %v", id, loginType, tokenValue, loginModel)
|
||||
|
||||
}
|
||||
|
@@ -13,6 +13,9 @@ type GenerateTokenFunc struct {
|
||||
}
|
||||
|
||||
func (g *GenerateTokenFunc) Exec(tokenForm string) (string, error) {
|
||||
if tokenForm == "" {
|
||||
return "", errors.New("GenerateToken failed: tokenStyle is nil")
|
||||
}
|
||||
handlerFunc, err := g.GetFunction(tokenForm)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -30,7 +33,7 @@ func (g *GenerateTokenFunc) GetFunction(tokenForm string) (GenerateFunc, error)
|
||||
return nil, errors.New("GetFunction() failed: load func error")
|
||||
}
|
||||
if value == nil {
|
||||
return nil, errors.New("GetFunction() failed: func doesn't exist")
|
||||
return nil, errors.New("GetFunction() failed: this tokenStyle generate func doesn't exist")
|
||||
}
|
||||
handlerFunc := value.(GenerateFunc)
|
||||
return handlerFunc, nil
|
||||
|
Reference in New Issue
Block a user