如何在laravel上重新路由/注册到我的SPA应用程序?

时间:2019-02-12 08:49:10

标签: php vue.js laravel-5.7

请帮助我,我正在用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
  } 

];

2 个答案:

答案 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分开。