【问题标题】:Laravel, Auth and logging out from a modelLaravel,身份验证和从模型中注销
【发布时间】:2015-06-14 11:01:08
【问题描述】:

我目前正在使用 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 开始吗?我当然可以编辑我的所有控制器以检查模型返回的值以注销,但由于中间件不能完成吗? 编辑我所有的控制器似乎真的很长,这意味着很多重复的代码。

【问题讨论】:

    标签: php authentication laravel


    【解决方案1】:

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

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

    还是谢谢你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2017-08-29
      • 2015-05-25
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多