我有一个调用我们的API的函数,名为executeGetRequest(带有其他HTTP方法的变体)。它是静态的,位于基类中。它是从控制器调用的。如果API返回401 HTTP状态代码,则executeGetRequest应将用户重定向到“前端”Yii2项目的注销页面,以清除过期的会话数据。
我和我的同事尝试了多种不同的重定向方式。 $ this-> redirect()将无效,因为静态上下文中没有$ this对象。
return Yii::$app->getResponse()->redirect(Url::to('login/user-logout'));
不起作用。
Yii::$app->getResponse()->redirect(Url::to('login/user-logout'))->send();
return;
不起作用。我们尝试使用和不使用Url :: to()。
我能够在检查401响应的条件中获得Yii :: trace()。它工作正常。所以问题不是检测401状态代码,而是重定向。
答案 0 :(得分:1)
应该工作
Yii::$app->response->redirect(['login/user-logout'])->send(); return;
可能导致您无法正常工作的原因:
logout
操作通常就是这种情况。 401
意味着它可能是#3。尝试使用相同的重定向机制,但指向其他路由和/或删除verb
POST操作的user-logout
行为以验证它。