gpt4 book ai didi

javascript - 如何在 Laravel 中结合 Session 和 API 身份验证?

转载 作者:行者123 更新时间:2023-11-28 03:39:14 25 4
gpt4 key购买 nike

我有一个简单的项目,只有 3 个表。 用户table2table3

用户架构

Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('username')->unique();
$table->string('password');
$table->string('api_token')->unique();
$table->rememberToken();
$table->timestamps();
});

其他 2 个表可通过 API 资源访问。

这是我的路线:

routes/web.php

Route::get('/', 'Auth\LoginController@showLogin')->name('login');
Route::post('/login', 'Auth\LoginController@login');
Route::get('/logout', 'Auth\LoginController@logout')->name('logout');
//Authenticated users will be redirected here
Route::get('/home', 'HomeController@index')->name('home');

routes/api.php

Route::resource('/table1', 'Table1Controller');
Route::resource('/table2', 'Table2Controller');

我已在 Table1ControllerTable2Controller 中添加了 auth:api 中间件。

public function __construct()
{
$this->middleware('auth:api');
}

所以准确地说我只有两页。经过身份验证的用户进入的主页和登录页面。

添加用户时,它还会将随机字符串 api_token 保存到其行中。

我正在使用 VueJS,我不想弄乱并使用 Node 来处理这个问题。因此,我下载了 vue.min.js 并将其包含在我的 blade 文件中。

因此,当您登录时,您将被重定向到 /home 页面。我的页面的布局页面有这个:

<script src="{{ asset('js/vue.min.js') }}"></script>
<script src="{{ asset('js/axios.min.js') }}"></script>
<script>
const user = @json(Auth::user());

const http = axios.create({
baseURL: '/api',
headers: {
'Authorization': user ? 'Bearer ' + user.api_token : ''
}
});
</script>

使用上面的代码,您应该能够在发送请求时访问 table1 和 table2 api。

现在我知道我可以只使用 webpack 并使我的应用程序成为 SPA,然后只使用 Passport 或可能只使用 jwt。但我不想,因为它是一个非常简单的应用程序,我想在不刷新页面的情况下执行操作,例如在表中添加数据、编辑数据并在模式中显示它等。

顺便说一下,这个应用程序只能由同一个应用程序使用。没有其他服务将访问它。我只想使用 Vue 实现 react 性并避免整页重新加载。

我缺少更好的方法吗?

最佳答案

如果用户电子邮件和密码在数据库中匹配,则只需创建一个身份验证 session ,您就可以使用身份验证外观。

Auth::user();

希望这有帮助

关于javascript - 如何在 Laravel 中结合 Session 和 API 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com