请帮助我,我正在用Vue构建SPA,登录页面是根页面
Route::get('/', function () {
return view('auth.login');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
// this is my HomeController index method
public function index()
{
return view('layouts.app');
}
此登录页面从通常的刀片文件login.blade.php加载,然后登录成功后,便转到由我的/home
处理的HomeController
。控制器仅渲染版面视图,然后Vue将从那里进行接管。另外,我使用的是jeremykenedy \ LaravelRoles中的laravel-roles库,所以我只希望Admin能够使用auth提供的相同注册功能注册用户,我已经做到了,并且一切正常,但是现在的问题是,当我进入SPA时,如果将URL更改为http://127.0.0.1:8000
之类的根,它将再次返回登录页面,另外http://127.0.0.1:8000/register
也将转到注册刀片文件而不是我创建和路由的register.vue。我该如何处理?
这是我的Vue路由器
const routes = [
{
name: 'Default',
path: '/',
component: HomeComponent
},
{
name: 'Home',
path: '/home',
component: HomeComponent
},
{
name: 'Register',
path: '/register',
component: RegisterComponent
}
];
答案 0 :(得分:1)
在您的route / web.php中,您应该具有Auth::routes()
指令。
摆脱它并替换为
$this->get('admin/login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('admin/login', 'Auth\LoginController@login');
$this->post('admin/logout', 'Auth\LoginController@logout')->name('logout');
$this->get('admin/register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('admin/register', 'Auth\RegisterController@register');
$this->get('admin/password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('admin/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('admin/password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('admin/password/reset', 'Auth\ResetPasswordController@reset');
现在,您可以摆脱不需要的路线,并用看起来合适的方式替换它们。 希望对您有所帮助。
答案 1 :(得分:0)
当您重新加载或尝试手动进入另一页面时,它将进入Laravel路线,因为您位于Laravel PORT http://127.0.0.1:8000
上。当您单击Link
时,只有手动路由才能起作用。对于这个问题,我总是尝试将Laravel和Vue分开。