这可以通过 Apache httpd 使用内联登录流程的技巧来实现。
基本上,当用户尝试访问受保护的资源时,httpd 会在同一页面内向他显示登录表单(配置为错误文档),而不会将用户重定向到登录页面。
基本内联示例
AuthFormProvider file
ErrorDocument 401 "/login.shtml"
AuthUserFile "conf/passwd"
AuthType form
AuthName realm
AuthFormLoginRequiredLocation "http://example.com/login.html"
Session On
SessionCookieName session path=/
示例内联登录表单
<form method="POST" action="">
Username: <input type="text" name="httpd_username" value="" />
Password: <input type="password" name="httpd_password" value="" />
<input type="submit" name="login" value="Login" />
</form>
参考 - https://httpd.apache.org/docs/2.4/mod/mod_auth_form.html(内联登录)
这将有助于保留传入的 URI,并且当用户单击登录按钮时,如果身份验证成功,则将授予用户访问资源的权限。
因此,这将避免页面重定向到登录页面,从而保留页面状态和内容。