Laravel,Auth和从模型中注销


Laravel, Auth and logging out from a model

我目前正在使用Laravel 5 Authentification,但我已经对其进行了编辑,允许我连接到API服务器,而不是Eloquent模型。

这是我的自定义UserProvider的代码:

<?php namespace App'Auth;
use Illuminate'Contracts'Auth'UserProvider as UserProviderInterface;
use WDAL;
use Illuminate'Contracts'Auth'Authenticatable;
use Illuminate'Auth'GenericUser;
use Session;
class WolfUserProvider implements UserProviderInterface {
    private $_loggedUser;
    public function __construct()
    {
        $this->_loggedUser = null;
        $user = Session::get('user');
        if (!empty($user)) {
            $this->_loggedUser = unserialize($user);
        }
    }
    public function retrieveById($id)
    {
        return $this->_loggedUser;
    }
    public function retrieveByToken($identifier, $token)
    {
        return null;
    }
    public function updateRememberToken(Authenticatable $user, $token)
    {
        //dd('updateRememberToken');
    }
    public function retrieveByCredentials(array $credentials)
    {
        $user = WDAL::getContactCredentials($credentials['login']);
        return $user;
    }
    public function validateCredentials(Authenticatable $user, array $credentials)
    {

        if($user->username == $credentials['login'] && $user->password == $credentials['password']){
            $this->_loggedUser = $user;
            Session::set('user', serialize($user));     
           return true;
        }
        else{
            return false;
        }
    }
}
?>

此代码可能并不完美,因为它仍处于早期开发阶段;-)(如果你想的话,可以随时向我提出一些改进的想法)

因此,当用户登录时,它可以访问整个平台和多个视图,并可以与API服务器通信以显示和编辑数据。

有时,API服务器可能会返回"会话ID无效",当我的模型收到此消息时,用户应该重定向到登录页面。

从一个控制器它真的很容易处理我可以使用以下代码(注销链接):

public function getLogout()
{
    $this->auth->logout();
    Session::flush();

    return redirect('/');
}

但你知道我应该如何从模特开始吗?当然,我可以编辑我的所有控制器来检查Model返回的值以注销,但由于中间件,这就不能完成吗?编辑我所有的控制器似乎真的很长,这意味着有很多重复的代码。

我的一次尝试是从Controller抛出一个异常,并从auth中间件捕获。它不起作用,因为我没有写use Exception;

我现在正在捕获异常,现在可以从中间件重定向用户。

无论如何,谢谢你!