如何存储和检索原始请求位置(/secure),以便在用户登录时将其返回到该位置?
Nginx auth_request的一切都很好,如果用户通过了身份验证,内部/access_token返回200并继续访问/secure location。
如果用户未通过身份验证,则/access_token location将返回401,并将用户重定向到登录页。
location / {
include proxy_params.conf;
proxy_pass http://172.31.25.103:3030;
location /secure {
auth_request /access_token;
auth_request_set $auth_status $upstream_status;
auth_request_set $auth_cookie $upstream_http_set_cookie;
add_header X-Payload $payload;
add_header X-Location_se $request;
}
}
# ...
location /access_token { #internal
internal;
include proxy_params.conf;
proxy_pass @authserver;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Payload $payload;
add_header X-Payload_at $payload;
}
error_page 401 = @error401;
location @error401 {
add_header X-Success-Redirect $request;
return 302 '/login/';
}
用户登录后,我希望它将他们返回到原始/安全位置,因为他们已经登录并获得凭据?
1条答案
按热度按时间5w9g7ksd1#
要在身份验证后重定向到上一个位置,我们可以使用以下步骤:
1.在Nginx配置中,为
auth_request
指令设置一个location块,该指令指定由auth_request
模块控制的URI。1.在相同的Nginx配置中,为
auth_request
指令中指定的URI设置一个位置块,该位置块应该包含处理身份验证过程的指令。1.在
login
页的位置块中,设置一个表单,用于将登录身份证明提交到auth
位置。登录成功后,auth
位置将用户重定向到触发auth_request
的原始URL。1.在
auth_backend
位置中,添加一个指令以设置包含原始URL的HTTP标头。登录过程完成后,登录服务器可以使用此标头将用户重定向回原始URL。1.在登录服务器上,创建一个脚本,用于处理登录身份证明并将用户重定向回
X-Original-URI
标头中指定的原始URL。登录成功时,登录表单应调用此脚本。