任何想法如何使用vue js和vue路由器在laravel 5.3中进行基于会话的身份验证

时间:2016-11-17 16:56:40

标签: laravel laravel-5 vue.js vue-resource vue-router

我现在最大的问题是身份验证

我的头疼,因为我使用api来获取并使用vue将数据发送到服务器

所以香港专业教育学院尝试使用AUTH中间件进行登录,但它一直说未经授权即使我已登录

那么身份验证问题是什么?如何实现基于会话的身份验证?

1 个答案:

答案 0 :(得分:2)

如果您使用Laravel作为API,您可能希望进行基于令牌的身份验证。主要想法是使用' api' guard(使用TokenGuard类),而不是默认的' web'警卫(您可以在congif/auth.php中更改此内容)。这样,Laravel将在每个请求的Authorization标头中查找Bearer令牌。

This is a decent walk through开始使用,但我确定还有很多其他好的博客文章和教程。

编辑:

不确定这是否有用,但这是一个使用自动测试的示例。在我的ModelFactory中,我有一个api_token属性的用户模型,该属性设置为60个字符的随机(和唯一)字符串。这是一个简单的测试,以确保我可以检索用户列表:

/** @test */
public function user_index_endpoint_returns_list_of_users()
{
    $user = factory(User::class)->create();

    $this->get('/users', array(
                'Accept' => 'application/json',
                'Authorization' => 'Bearer ' . $user->api_token
            ))
         ->assertResponseStatus(200)
         ->seeJsonStructure([
            'users'
         ]);
}

在我的config/auth.php文件的顶部,我已将默认警卫设置为' api':

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

最后,在我的路线文件中,我已设置我的用户路线以使用' auth'中间件。

Route::group(['middleware' => 'auth'], function() {
    Route::get('/users', 'UsersController@index');
});

因为我已经定义了' api'中间件作为我的默认值,在幕后Laravel将使用TokenGuard类来尝试验证我的请求。为此,它将在我的请求中查找持有者令牌,并将其与users表进行比较。