Casbin

Casbin

  • Документ
  • API
  • Редактор
  • Плагины IDE
  • Single Sign-On (SSO)
  • Форум
  • Справка
  • Блог
  • Pricing
  • Contact Sales
  • Languages iconРусский
    • English
    • 中文
    • 한국어
    • Français
    • Deutsch
    • 日本語
    • Помочь перевести
  • GitHub

›Модель

Основы

  • Общий обзор
  • Начать работу
  • Как это работает
  • Уроки

Модель

  • Поддерживаемые модели
  • Синтаксис для моделей
  • Эффект
  • Функция
  • RBAC
  • RBAC with Pattern
  • RBAC с доменами
  • Casbin RBAC v.s. RBAC96
  • АДАТ
  • Приоритетная модель
  • Супер админ

Хранилище

  • Модель хранилища
  • Хранилище политики
  • Загрузка подмножества политик

Расширения

  • Enforcers
  • Адаптеры
  • Наблюдатели
  • Диспетчеры
  • Менеджеры ролей
  • Посредники
  • GraphQL Middlewares
  • Облачные Посредники

API

  • Обзор API
  • API управления
  • RBAC API
  • RBAC с доменным API
  • RoleManager API
  • Права доступа к данным

Расширенное использование

  • Многопоточность
  • Benchmarks
  • Оптимизация производительности
  • Авторизация Кубернетов
  • Авторизация служебной ячейки через посланника

Управление

  • Администратор портала
  • Служба Касбина
  • Обработка журнала и ошибок
  • Использование интерфейса

Редактор

  • Онлайн-редактор
  • Плагины IDE

Ещё

  • Наши усыновители
  • Вклад
  • Политика конфиденциальности
  • Условия предоставления услуг
Translate

Функция

Функции в соответствиях

Вы даже можете указать функции в матчере, чтобы сделать его более мощным. Вы можете использовать встроенные функции или указать свою собственную функцию. Все встроенные функции имеют такой формат (кроме keyGet и keyGet2):

bool function_name(string arg1, string arg2)

Возвращается ли arg1 соответствует arg2.

keyGet и keyGet2 вернет строку, которая соответствует маске, и вернет "" если ничего не найдено.

Поддерживаются встроенные функции:

Функцияarg1arg2Пример
матч ключейпуть URL, как /alice_data/resource1путь к URL или шаблон * типа /alice_data/*keymatch_model.conf/keymatch_policy.csv
keyGetпуть URL, как /alice_data/resource1путь к URL или шаблон * типа /alice_data/*keyget_model.conf/keymatch_policy.csv
Ключ Соответствия2путь URL, как /alice_data/resource1путь URL или шаблон : типа /alice_data/:resourcekeymatch2_model.conf/keymatch2_policy.csv
ключ Get2путь URL, как /alice_data/resource1путь к URL или : шаблон типа /alice_data/:resourcekeyget2_model.conf/keymatch2_policy.csv
Матч ключ3путь URL, как /alice_data/resource1путь URL или шаблон {} типа /alice_data/{resource}https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L171-L196
совпадение ключей 4путь URL, как /alice_data/123/book/123путь URL или шаблон {} типа /alice_data/{id}/book/{id}https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L208-L222
регулярное совпадениелюбая строкашаблон регулярного выраженияkeymatch_model.conf/keymatch_policy.csv
ipMatchIP-адрес, как 192.168.2.123IP-адрес или CIDR, как 192.168.2.0/24ipmatch_model.conf/ipmatch_policy.csv
глобальная игратакой путь как /alice_data/resource1шаблон glob, как /alice_data/*https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L426-L466

Подробнее об этих функциях смотрите здесь: https://github.com/casbin/casbin/blob/master/util/builtin_operators_test.go

Как добавить настраиваемую функцию

Сначала подготавливайте свою функцию. Он принимает несколько параметров и возвращает бул:

func KeyMatch(key1 string, key2 string) bool {
    i := strings. ndex(ключ2, "*")
    if i == -1 {
        return key1 == key2
    }

    if len(key1) > i {
        return key1[:i] == key2[:i]
    }
    return key1 == key2[:i]
}

Затем оберните его с помощью интерфейса типа{}:

func KeyMatchFunc(args ...interface{}) (interface{}, error) {
    name1 := args[0].(string)
    name2 := args[1].(string)

    return (bool)(KeyMatch(name1, name2)), nil
}

Наконец, зарегистрируйте функцию в Касбин в форсере:

e.AddFunction("my_func", KeyMatchFunc)

Теперь вы можете использовать функцию в вашей модели CONF следующим образом:

[matchers]
m = r.sub == p.sub && my_func(r.obj, p.obj) && r.act == p.act
← ЭффектRBAC →
  • Функции в соответствиях
  • Как добавить настраиваемую функцию
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization