redisadapter

package module
v3.6.0 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2025 License: Apache-2.0 Imports: 11 Imported by: 6

README

Redis Adapter

Go Report Card Build Coverage Status Godoc Release Discord Sourcegraph

Redis Adapter is the Redis adapter for Casbin. With this library, Casbin can load policy from Redis or save policy to it.

Installation

go get github.com/casbin/redis-adapter/v3

Configuration Options

The Config struct supports the following options:

  • Network (string): Network type, e.g., "tcp", "unix" (required when not using Pool)
  • Address (string): Redis server address, e.g., "127.0.0.1:6379" (required when not using Pool)
  • Key (string): Redis key to store Casbin rules (default: "casbin_rules")
  • Username (string): Username for Redis authentication (optional)
  • Password (string): Password for Redis authentication (optional)
  • TLSConfig (*tls.Config): TLS configuration for secure connections (optional)
  • Pool (*redis.Pool): Existing Redis connection pool (optional, if provided, other connection options are ignored)

Usage Examples

Basic Usage
package main

import (
	"github.com/casbin/casbin/v2"
	"github.com/casbin/redis-adapter/v3"
)

func main() {
	// Recommended approach using Config
	config := &redisadapter.Config{Network: "tcp", Address: "127.0.0.1:6379"}
	a, _ := redisadapter.NewAdapter(config)

	// With password authentication
	// config := &redisadapter.Config{Network: "tcp", Address: "127.0.0.1:6379", Password: "123"}
	// a, _ := redisadapter.NewAdapter(config)

	// With user credentials
	// config := &redisadapter.Config{Network: "tcp", Address: "127.0.0.1:6379", Username: "user", Password: "pass"}
	// a, _ := redisadapter.NewAdapter(config)

	// With TLS configuration
	// var clientTLSConfig tls.Config
	// ...
	// config := &redisadapter.Config{Network: "tcp", Address: "127.0.0.1:6379", Username: "testAccount", Password: "123456", TLSConfig: &clientTLSConfig}
	// a, _ := redisadapter.NewAdapter(config)

	e, _ := casbin.NewEnforcer("examples/rbac_model.conf", a)

	// Load the policy from DB.
	e.LoadPolicy()

	// Check the permission.
	e.Enforce("alice", "data1", "read")

	// Modify the policy.
	// e.AddPolicy(...)
	// e.RemovePolicy(...)

	// Save the policy back to DB.
	e.SavePolicy()
}
With Connection Pool
package main

import (
	"github.com/casbin/casbin/v2"
	"github.com/casbin/redis-adapter/v3"
	"github.com/gomodule/redigo/redis"
)

func main() {
	pool := &redis.Pool{Dial: func() (redis.Conn, error) { return redis.Dial("tcp", "127.0.0.1:6379") }}
	config := &redisadapter.Config{Pool: pool, Key: "casbin_rules"}
	a, _ := redisadapter.NewAdapter(config)

	e, _ := casbin.NewEnforcer("examples/rbac_model.conf", a)
	
	// Load the policy from DB.
	e.LoadPolicy()

	// Check the permission.
	e.Enforce("alice", "data1", "read")

	// Save the policy back to DB.
	e.SavePolicy()
}

Getting Help

License

This project is under Apache 2.0 License. See the LICENSE file for the full license text.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

type Adapter struct {
	// contains filtered or unexported fields
}

Adapter represents the Redis adapter for policy storage.

func NewAdapter

func NewAdapter(config *Config) (*Adapter, error)

NewAdapter creates a new Redis adapter with the provided configuration.

func NewAdapterBasic added in v3.6.0

func NewAdapterBasic(network string, address string) (*Adapter, error)

NewAdapterBasic is the basic constructor for Adapter. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithKey

func NewAdapterWithKey(network string, address string, key string) (*Adapter, error)

NewAdapterWithKey creates adapter with custom key. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithOption

func NewAdapterWithOption(options ...Option) (*Adapter, error)

NewAdapterWithOption creates adapter with options pattern. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithPassword

func NewAdapterWithPassword(network string, address string, password string) (*Adapter, error)

NewAdapterWithPassword creates adapter with password authentication. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithPool

func NewAdapterWithPool(pool *redis.Pool) (*Adapter, error)

NewAdapterWithPool creates adapter with connection pool. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithPoolAndOptions added in v3.4.0

func NewAdapterWithPoolAndOptions(pool *redis.Pool, options ...Option) (*Adapter, error)

NewAdapterWithPoolAndOptions creates adapter with pool and options. Deprecated: Use NewAdapter with Config struct instead.

func NewAdapterWithUser

func NewAdapterWithUser(network string, address string, username string, password string) (*Adapter, error)

NewAdapterWithUser creates adapter with user credentials. Deprecated: Use NewAdapter with Config struct instead.

func (*Adapter) AddPolicies

func (a *Adapter) AddPolicies(sec string, ptype string, rules [][]string) error

AddPolicies adds policy rules to the storage.

func (*Adapter) AddPolicy

func (a *Adapter) AddPolicy(sec string, ptype string, rule []string) error

AddPolicy adds a policy rule to the storage.

func (*Adapter) IsFiltered

func (a *Adapter) IsFiltered() bool

IsFiltered returns true if the loaded policy has been filtered.

func (*Adapter) LoadFilteredPolicy

func (a *Adapter) LoadFilteredPolicy(model model.Model, filter interface{}) error

LoadFilteredPolicy loads only policy rules that match the filter.

func (*Adapter) LoadPolicy

func (a *Adapter) LoadPolicy(model model.Model) error

LoadPolicy loads policy from database.

func (*Adapter) RemoveFilteredPolicy

func (a *Adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) error

RemoveFilteredPolicy removes policy rules that match the filter from the storage.

func (*Adapter) RemovePolicies

func (a *Adapter) RemovePolicies(sec string, ptype string, rules [][]string) error

RemovePolicies removes policy rules from the storage.

func (*Adapter) RemovePolicy

func (a *Adapter) RemovePolicy(sec string, ptype string, rule []string) error

RemovePolicy removes a policy rule from the storage.

func (*Adapter) SavePolicy

func (a *Adapter) SavePolicy(model model.Model) error

SavePolicy saves policy to database.

func (*Adapter) UpdateFilteredPolicies

func (a *Adapter) UpdateFilteredPolicies(sec string, ptype string, newPolicies [][]string, fieldIndex int, fieldValues ...string) ([][]string, error)

func (*Adapter) UpdatePolicies

func (a *Adapter) UpdatePolicies(sec string, ptype string, oldRules, newRules [][]string) error

func (*Adapter) UpdatePolicy

func (a *Adapter) UpdatePolicy(sec string, ptype string, oldRule, newPolicy []string) error

UpdatePolicy updates a new policy rule to DB.

type CasbinRule

type CasbinRule struct {
	PType string
	V0    string
	V1    string
	V2    string
	V3    string
	V4    string
	V5    string
}

CasbinRule is used to determine which policy line to load.

type Config added in v3.6.0

type Config struct {
	// Network is the network type, e.g., "tcp", "unix"
	Network string
	// Address is the Redis server address, e.g., "127.0.0.1:6379"
	Address string
	// Key is the Redis key to store Casbin rules (default: "casbin_rules")
	Key string
	// Username for Redis authentication (optional)
	Username string
	// Password for Redis authentication (optional)
	Password string
	// TLSConfig for secure connections (optional)
	TLSConfig *tls.Config
	// Pool is an existing Redis connection pool (optional)
	// If provided, Network, Address, Username, Password, and TLSConfig are ignored
	Pool *redis.Pool
}

Config represents the configuration for the Redis adapter.

type Filter

type Filter struct {
	PType []string
	V0    []string
	V1    []string
	V2    []string
	V3    []string
	V4    []string
	V5    []string
}

type Option

type Option func(*Adapter)

func WithAddress

func WithAddress(address string) Option

func WithKey

func WithKey(key string) Option

func WithNetwork

func WithNetwork(network string) Option

func WithPassword

func WithPassword(password string) Option

func WithTls

func WithTls(tlsConfig *tls.Config) Option

func WithUsername

func WithUsername(username string) Option

Jump to

Keyboard shortcuts

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