Хобрук: Ваш путь к мастерству в программировании

Могу ли я создать собственный список значений, например ACL, в Varnish 4?

Я использую Varnish версии 4. Я хотел бы знать, позволяет ли VCL создавать настраиваемый и повторно используемый список значений, таких как ACL. Я хочу использовать его для проверки файлов cookie посетителей. Если он модератор, не показывать кешированный контент.

Строка cookie:

   session=9urt2jipvkq77brfrf; UserID=158

Код:

   acl moderator{
       "158";
       "114";
   }

   sub vcl_recv {

      set req.http.UserID = regsub(req.http.Cookie,".*UserID=(\d+).*","\1"); // 158

      if(req.http.UserID ~ moderator){ // 158 found in the moderator list

          return(pass);
      }
   }

Ответы:


1

Краткий ответ: нет

ACL (список управления доступом) используется только для указания разных IP-адресов/хостов.

Однако для этого можно использовать VMOD. Оформить Переменная

Он имеет несколько основных функций для установки и получения переменных.

set("my_var", "this is the value")
set req.http.x-my-var = get("my_var")

Есть также несколько более продвинутых функций, таких как установка нескольких переменных из одной строки с использованием регулярных выражений.

variable.regset("ttl:d=\1s,grace:d=\2s", "^(?:.*,)?max-age=([0-9]+)(?:+([0-9]+))", beresp.http.Surrogate-Control);
set beresp.ttl = variable.get_duration("ttl");
set beresp.grace = variable.get_duration("grace");

ttl — имя переменной, grace — имя второй переменной

\1 и \2 — это простые обратные ссылки на регулярное выражение.

:d указывает тип, в данном случае длительность

Ваш список идентификаторов пользователей

Вы можете просто указать их в строке, разделенной запятыми

set("moderators", ",158,114,") //Notice the starting and ending comma-sign

if(","+req.http.UserID+"," ~ get("moderators")){

     return(pass);
 }
21.12.2015
  • Я думаю, что это решение неверно. Таким образом, такие UID, как 1, 5, 8, 15, 58 и т. Д., Будут обрабатываться также как модераторы. 21.12.2015
  • Это правда, я немного отредактировал регулярное выражение, чтобы исправить это. 21.12.2015
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..