В chapter 7 of the Yaws PDF documentation есть пример, который делает именно то, о чем вы просите. Он использует перестройку arg для перенаправления неавторизованных запросов на страницу входа.
Сначала мы настраиваем модуль Arg ReWriter имени myapp
в серверной части yaws.conf
:
arg_rewrite_mod = myapp
myapp:arg_rewrite/1
функция проверяет входящий запрос через #arg{}
записи для поиска конкретного печенья, и если не найдены и запрос не пытается получить один из трех ресурсов, возвращенных из функции login_pages/0
, она вызывает do_rewrite/1
переписать запрос, чтобы доставить login.yaws
страницы вместо:
arg_rewrite(Arg) ->
OurCookieName = "myapp_sid"
case check_cookie(Arg, OurCookieName) of
{error, _} ->
do_rewrite(Arg);
{ok, _Session} ->
%% return Arg untouched
Arg
end.
%% these pages must be shippable without a good cookie
login_pages() ->
["/banner.gif", "/login.yaws", "/post_login.yaws"].
do_rewrite(Arg) ->
Req = Arg#arg.req,
{abs_path, Path} = Req#http_request.path,
case lists:member(Path, login_pages()) of
true ->
Arg;
false ->
Arg#arg{req = Req#http_request{path = {abs_path, "/login.yaws"}},
state = Path}
end.
Дополнительную информацию см. На странице Yaws PDF documentation.
:) Я уже нашел того же приятеля, но в любом случае Спасибо :) – Khanjarrr