php - 使用 HTTP 403 重定向
问题描述
我正在使用 Slim PHP 并希望将用户重定向到/login
如果他们未登录但尝试访问需要用户登录的页面。在搜索如何构建我的中间件时,我发现此代码的所有变体在那个地方
class Auth{
public function requireLogin(Request $request, Response $response, $next){
if( !isLoggedIn() ) return $response->withRedirect('/login', 403);
return $next($request, $response);
}
}
例如在这个 SO 答案和这个 Slim discourse answer中。
问题是我无法将重定向和 HTTP 403 结合使用。据我所知,正常的 HTTP 重定向仅限于HTTP 代码 3xx。实际上,上面的代码在与 example 一起使用时可以正常工作302
。
我是否遗漏了某些东西,或者所有答案都结合起来withRedirect
并且403
“不正确”(因为不会导致用户浏览器的实际重定向)?
解决方案
如果您的应用程序是使用 Web 浏览器访问的 HTML 网站,则浏览器仅在状态码为 1 时才会重定向3xx
。
如果您的应用程序是使用 HTTP 客户端访问的 API,那么您有更多的余地。对于 API,您可以使用403
或401
状态代码来指示未经授权无法完成请求。您还可以包含一个Location
标头来告诉客户去哪里获得授权,但当然,如果他们跟进该链接,则取决于客户。
推荐阅读
- python - 如何将参数添加到在熊猫的 groupby 中调用的函数?
- javascript - 为什么我的可折叠链接在 Bootstrap 5 中不可点击?
- flutter - setState is not calling when Navigating to another page
- db2 - Installing a new DB2 subsystem at function level 100 (z/OS)
- .net-core - Using Audit.NET SqlDataProvider with Azure SQL and Managed Identity
- php - 计算 2 个表中的出现次数
- javascript - 在 JavaScript 中 var x=2, var y="2"; console.log(xy),为什么 o/p 为 0?
- java - 有人可以在实例化一个新类时解释我的代码的初始化顺序吗
- excel - 复制并粘贴 Excel 表格,要在代码中引用的表格单元格数据的值
- c# - 我如何知道 WPF 选项卡控制页何时成功选择?