如何将应用程序从我的自定义类重定向到特定网址?
假设我在Laravel应用程序中有自定义类API:
class API {
private function generic_request( $uri )
{
$response = $this->getResponse($uri);
if($response == 'bad_token')
{
//redirect to login screen with message
}
}
在我的控制器功能中:
public function add_employee() {
$data['employee_positions'] = API::generic_request('/employees/position_list');
$this->layout->content = View::make('employees.add_employee')->with($data);
}
我已尝试Events
,但您无法从Event
侦听器重定向。现在我正在使用Exceptions
,但我觉得这是错误的做法。例如:
App::abort(401);
然后在global.php
:
App::error(function(Exception $exception, $code)
{
/*CORE API Exceptions*/
if($code == 401)
{
Session::put('message','System Action: Expired Token');
return Redirect::to('login');
}
}
答案 0 :(得分:0)
您只需创建一个响应并将其一直返回Laravel:
<?php
class API {
public function doWhatever($uri)
{
return $this->generic_request($uri);
}
private function generic_request( $uri )
{
$response = $this->getResponse($uri);
if($response == 'bad_token')
{
return Redirect::to('login')->with('message', 'your message');
}
}
}
Route::get('test', function()
{
return with(new API)->doWhatever('yourURI');
});
答案 1 :(得分:0)
使用Laravel 5.7,您可以使用@casft最初提到的内容-
abort(redirect('login')->with('alert-warning', 'Your session token has expired. Please login to continue.'));
当您不使用laravel传统Auth并依赖于承载令牌进行身份验证时,此外,您还想防止公共功能出现代码臭味,那么您可以使用此便捷功能过滤401 http响应调用。可能不是最佳或优雅的解决方案,但可以完成工作。