mirror of
https://github.com/click33/sa-token-go.git
synced 2026-04-22 23:37:07 +08:00
04a9e5a72f
2、完善部分功能
3.0 KiB
3.0 KiB
Permission Management
中文文档 | English
Set Permissions
// Set user permissions
stputil.SetPermissions(1000, []string{
"user:read",
"user:write",
"admin:*", // Wildcard: matches all admin permissions
})
Check Permissions
Single Permission
// Check if has permission
hasPermission := stputil.HasPermission(1000, "user:read")
Multiple Permissions (AND)
// Check if has all permissions
hasAll := stputil.HasPermissionsAnd(1000, []string{
"user:read",
"user:write",
})
Multiple Permissions (OR)
// Check if has any permission
hasAny := stputil.HasPermissionsOr(1000, []string{
"admin:read",
"admin:write",
})
Wildcard Support
// Set wildcard permissions
stputil.SetPermissions(1000, []string{
"admin:*", // All admin permissions
"user:*:view", // All user view permissions
"*", // All permissions
})
// Wildcard matching
stputil.HasPermission(1000, "admin:read") // ✅ Match admin:*
stputil.HasPermission(1000, "admin:delete") // ✅ Match admin:*
stputil.HasPermission(1000, "user:1:view") // ✅ Match user:*:view
Get Permissions
// Get user permissions list
permissions, err := stputil.GetPermissions(1000)
for _, perm := range permissions {
fmt.Println(perm)
}
Permission Patterns
Resource-based Permissions
"user:read" // Read user
"user:write" // Write user
"user:delete" // Delete user
"user:*" // All user operations
Hierarchical Permissions
"system:user:read" // Read system users
"system:user:*" // All system user operations
"system:*" // All system operations
Action-based Permissions
"create:post" // Create post
"edit:post" // Edit post
"delete:post" // Delete post
"*:post" // All post operations
Complete Example
package main
import (
"github.com/click33/sa-token-go/core"
"github.com/click33/sa-token-go/stputil"
"github.com/click33/sa-token-go/storage/memory"
)
func main() {
// Initialize
stputil.SetManager(
core.NewBuilder().
Storage(memory.NewStorage()).
Build(),
)
// Login
token, _ := stputil.Login(1000)
// Set permissions
stputil.SetPermissions(1000, []string{
"user:read",
"user:write",
"post:*",
"admin:*",
})
// Check permissions
if stputil.HasPermission(1000, "user:read") {
println("✅ Can read user")
}
if stputil.HasPermission(1000, "post:delete") {
println("✅ Can delete post (wildcard match)")
}
// Check multiple permissions
if stputil.HasPermissionsAnd(1000, []string{"user:read", "user:write"}) {
println("✅ Can read and write user")
}
}