У меня есть встроенный SPA Vue.js - используется JWT для аутентификации и слой API , предоставляемый Laravel .
Теперь мне требуется одна страница для запуска (вне SPA / Vue) непосредственно из Laravel, но только после того, как пользователь вошел в систему. Как только там мне нужно получить доступ к Auth::user()
- ноПохоже, что Laravel теперь не является пользователем, вошедшим в систему.
Не совсем уверен, какой код поместить сюда, но в любом случае это происходит:
Login.vue
<template>
<div>
<div class="alert alert-danger" v-if="error">
<p class="help-block" v-if="errors">{{ errors }}</p>
<p class="help-block" v-else >There was an error, unable to sign in with those credentials.</p>
</div>
<form autocomplete="off" @submit.prevent="login" method="post">
<div class="form-group">
<label for="email">E-mail</label>
<input type="email" id="email" class="form-control" placeholder="user@example.com" v-model="email" required>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" class="form-control" v-model="password" required>
</div>
<button type="submit" class="btn btn-default">Sign in</button>
</form>
</div>
</template>
<script>
export default {
data(){
return {
email: null,
password: null,
error: false,
errors: {}
}
},
methods: {
login(){
var app = this
this.$auth.login({
params: {
email: app.email,
password: app.password
},
success: function (resp) {
//app.error = true;
//console.log('>>> '+resp.response.data.msg);
//app.errors = resp.response.data.msg;
},
error: function (resp) {
app.error = true;
//console.log('>>> '+resp.response.data.msg);
app.errors = resp.response.data.msg;
},
rememberMe: true,
redirect: '/dashboard',
fetchUser: true,
});
},
}
}
</script>
routs / api.php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('auth/register', 'AuthController@register');
Route::post('auth/login', 'AuthController@login');
Route::post('findmember', 'FoundItemController@searchMember');
Route::post('sendmessage', 'MessagingController@sendMessage');
Route::group(['middleware' => 'jwt.auth'], function(){
//
// User auth controllers/methods should go here
//
Route::get('packages', 'PackageController@getPackages');
Route::get('auth/user', 'AuthController@user');
Route::post('auth/logout', 'AuthController@logout');
Route::get('user/items', 'ItemController@getItems');
Route::post('user/items/add', 'ItemController@addItem');
Route::get('user/mobile_numbers', 'MobileNumbersController@getNumbers');
Route::post('user/mobile_numbers/add', 'MobileNumbersController@addNumber');
Route::post('user/mobile_numbers/primary', 'MobileNumbersController@setPrimary');
Route::post('user/mobile_numbers/delete', 'MobileNumbersController@removeNumber');
Route::post('subscription/paypal/complete');
});
Route::group(['middleware' => 'jwt.refresh'], function(){
Route::get('auth/refresh', 'AuthController@refresh');
});
/ routs / web.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes(['verify' => true]);
Route::get('/verify', 'AuthController@verify')->name('verify');
Route::group(['middleware' => 'jwt.auth'], function(){
Route::get('testing', 'HomeController@index');
});
Я пытался добавить промежуточную оболочку вокруг моего домашнего контроллера (см. Ниже), но это возвращает null
), я чувствую, что должен сказать Laravel, что пользователь вошел в систему каким-то образом, но я полностью озадачен.
.. / controllers / HomeController.php Пространство имен App \ Http \ Controllers;
use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\Auth;
use JWTAuth;
use Log;
class HomeController extends Controller
{
public function index()
{
//return view('home');
dd(Auth::user());
}
}