- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的项目,只有 3 个表。 用户
、table2
和 table3
。
用户架构
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');
我已在 Table1Controller
和 Table2Controller
中添加了 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/
我是一名优秀的程序员,十分优秀!