gpt4 book ai didi

erlang - webmachine 和重定向未经身份验证的用户

转载 作者:行者123 更新时间:2023-12-01 01:24:57 24 4
gpt4 key购买 nike

在我的新项目中,我想使用 webmachine 和 mochiweb。我想做的第一件事是身份验证。

我编辑“dispatch.conf”并制作一些资源,例如:

{["auth"], my_res_auth, []}.
{["protected"], my_res_protected, []}.
{['*'], my_res_default, []}.

当有人访问“ protected ”资源时,如果他没有登录,我想将他重定向到“auth”资源。“auth”资源包含带有用户名和密码的 Web 表单,它完成所有身份验证工作。

我把这样的代码放在 my_res_protected.erl 里面:
is_authorized(ReqData, State) ->
case my_auth:is_authorized(ReqData) of
true -> {true, ReqData, State};
false ->
% here should be something to redirect user to "auth" resource
% currently i put such thing, which is incorrect:
{true, wrq:do_redirect(true, wrq:set_resp_header("location", "/auth", ReqData)), State}
% dont know what should i put instead of "true"
end.

我在谷歌上搜索了一些 example怎么做,但不喜欢我应该把这个功能放在所有资源中,这需要身份验证。

有什么办法吗?

最佳答案

我想我找到了正确的方法,将此代码放入 auth.hrl 文件并将其包含在我的资源中

is_authorized(ReqData, State) ->
case my_auth:is_authorized(ReqData) of
true -> {true, ReqData, State};
false ->
% there i got address, to which should i redirect
% this address is defined in dispatch.conf
% and walk trough my_res_protected:init/1 into State
case proplists:get_value(do_redirect, State, false) of
false ->
{{halt, 401}, wrq:set_resp_header(
"Content-type", "text/plain",
wrq:set_resp_body("NOT AUTHORIZED", ReqData)
), State};
Location ->
{{halt, 302}, wrq:set_resp_header("Location", Location, ReqData), State}
end
end.

关于erlang - webmachine 和重定向未经身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7682963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com