我正在使用Laravel 5.4,VueJS,AXIOS,VueRouter开发应用程序。 VueRouter负责应用程序中的所有导航,保存下面的路由配置:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Auth::routes();
Route::get('/{catchall?}', ['as' => 'start', 'middleware' => 'auth', function() {
return view('home')->with([...]);
}])->where('catchall', '.*');
这实质上将用户重定向到包含<router-link></routerlink>
的“基本”刀片文件。
但是,我现在正在我的应用程序中实现一个页面,任何人都可以访问(不需要auth中间件),并完全使用不同的布局(因此需要一个新的刀片文件)。
最好是这样访问:
app.sample.com/{some-string}
而不是像这样的其他东西:
app.sample.com/survey/{some-string}
{some-string}
是随机生成的字符串,然后被抛入数据库。可以通过我的一个模特访问。据我所知,我可以这样做:
Route::get('/{some-string}', 'SomeController@somemethod')
将此置于捕获之上应该有效。但是,如果/{some-string}
与数据库中的任何内容都不匹配,我希望它可以通过catchall处理,它将为home.blade.php
有没有干净的方法来解决这个问题?
答案 0 :(得分:0)
您实际上是在描述RedirectIfAuthenticated中间件,至少我会如何处理这个问题。利用中间件检查用户的身份验证级别,并在将其提供给应用程序之前进行任何路由匹配。