mirror of
				https://github.com/weloe/token-go.git
				synced 2025-11-01 03:12:41 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	tokenGo "github.com/weloe/token-go"
 | |
| 	"log"
 | |
| 	"net/http"
 | |
| )
 | |
| 
 | |
| var enforcer *tokenGo.Enforcer
 | |
| 
 | |
| type Auth struct {
 | |
| }
 | |
| 
 | |
| func (m *Auth) GetRole(id string) []string {
 | |
| 	var arr = make([]string, 2)
 | |
| 	arr[1] = "user"
 | |
| 	return arr
 | |
| }
 | |
| func (m *Auth) GetPermission(id string) []string {
 | |
| 	var arr = make([]string, 2)
 | |
| 	arr[1] = "user::get"
 | |
| 	return arr
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	var err error
 | |
| 	// use default adapter
 | |
| 	adapter := tokenGo.NewDefaultAdapter()
 | |
| 	enforcer, err = tokenGo.NewEnforcer(adapter)
 | |
| 	// set auth
 | |
| 	enforcer.SetAuth(&Auth{})
 | |
| 	// 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)
 | |
| 	http.HandleFunc("/user/check", CheckAuth)
 | |
| 
 | |
| 	log.Fatal(http.ListenAndServe(":8081", nil))
 | |
| }
 | |
| 
 | |
| func CheckAuth(w http.ResponseWriter, req *http.Request) {
 | |
| 	ctx := tokenGo.NewHttpContext(req, w)
 | |
| 	err := enforcer.CheckRole(ctx, "user")
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(w, "CheckRole() error: %s\n", err)
 | |
| 		return
 | |
| 	}
 | |
| 	err = enforcer.CheckPermission(ctx, "user::get")
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(w, "CheckPermission() error: %s\n", err)
 | |
| 		return
 | |
| 	}
 | |
| 	fmt.Fprintf(w, "you have authorization")
 | |
| }
 | |
| 
 | |
| 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")
 | |
| }
 | 
