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

Posted

技术标签:

【中文标题】任何想法如何使用 vue js 和 vue 路由器在 laravel 5.3 中进行基于会话的身份验证【英文标题】:Any Idea how to do Session based authentication in laravel 5.3 using vue js and vue router 【发布时间】:2017-04-01 08:10:43 【问题描述】:

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

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

所以我尝试使用 AUTH 中间件进行登录,但它一直说即使我登录也是未经授权的

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

【问题讨论】:

【参考方案1】:

如果您使用 Laravel 作为 API,您可能希望进行基于令牌的身份验证。主要思想是使用 'api' 保护(使用 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 类来尝试验证我的请求。为此,它将在我的请求中查找不记名令牌并将其与用户表进行比较。

【讨论】:

能不能给个小sn-p怎么做?这让我头疼 我用一些示例代码添加到我的答案中。希望对您有所帮助!

以上是关于任何想法如何使用 vue js 和 vue 路由器在 laravel 5.3 中进行基于会话的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Vue路由器firebase auth guard不起作用

Vue.js路由组件vue-router如何使用?

Laravel 5.7 和 Vue 路由模式

Vue.Js Filters to Computed - 如何使用?

在 vue js 上观看路由对象

如何使用 Vue.js 路由器将状态和事件处理程序作为道具传递给子组件?