Laravel routes.php 使用会话包含文件
Laravel routes.php include file using Session
不确定这是否可行,但就是这样。
我想要做的是将我的 "admin" 路由作为一个单独的文件包含在内,前提是用户是管理员(因此非管理员将收到 404 错误
routes.php
if( Session::get('user')->is_admin )
require_once('routes-admin.php');
if( Auth::check() )
require_once('routes-user.php');
Route::get('/', function() {
return view('home');
});
路线-admin.php
Route::get('admin', function() {
return view('admin-dashboard');
});
路线-user.php
Route::get('user', function() {
return view('user-dashboard');
});
我想做的是避免每次都重复测试 Route
因此,如果我的用户段有 10 个页面,我目前需要 30 行专用于 Auth::check()
的代码(if、else 和 redirect if not),在这里我可以对 routes.php
和用户进行一次检查如果他们不属于
,将获得 404
有没有办法在 Route
之外执行此检查?
也许您想先阅读 documentation?
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', function()
{
// Uses Auth Middleware
});
Route::get('user/profile', function()
{
// Uses Auth Middleware
});
});
上面的代码正是你所需要的,就是"person logged in?"让他去页面"whatever"。
您可以自己创建中间件(检查用户是管理员还是基本用户)并应用于群组。
class BeforeMiddleware implements Middleware
{
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
}
不要误会,只是你的做法真的不像Laravel。尝试看看一些在 L5 甚至 L4 中完成的开源项目。尝试使用泰勒已经为你做的一切。文档是您的朋友。
根据@Kyslik 对中间件的回应,您可以在您的 RouteServiceProvider 中 "include" 您自己的路由文件,就像默认路由文件一样,RouteServiceProvide 位于:app/Providers/RouteServiceProvider.php,
查找部分
require app_path('Http/routes.php');
并且只需复制您想要包含的路由文件的名称
不确定这是否可行,但就是这样。
我想要做的是将我的 "admin" 路由作为一个单独的文件包含在内,前提是用户是管理员(因此非管理员将收到 404 错误
routes.php
if( Session::get('user')->is_admin )
require_once('routes-admin.php');
if( Auth::check() )
require_once('routes-user.php');
Route::get('/', function() {
return view('home');
});
路线-admin.php
Route::get('admin', function() {
return view('admin-dashboard');
});
路线-user.php
Route::get('user', function() {
return view('user-dashboard');
});
我想做的是避免每次都重复测试 Route
因此,如果我的用户段有 10 个页面,我目前需要 30 行专用于 Auth::check()
的代码(if、else 和 redirect if not),在这里我可以对 routes.php
和用户进行一次检查如果他们不属于
404
有没有办法在 Route
之外执行此检查?
也许您想先阅读 documentation?
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', function()
{
// Uses Auth Middleware
});
Route::get('user/profile', function()
{
// Uses Auth Middleware
});
});
上面的代码正是你所需要的,就是"person logged in?"让他去页面"whatever"。
您可以自己创建中间件(检查用户是管理员还是基本用户)并应用于群组。
class BeforeMiddleware implements Middleware
{
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
}
不要误会,只是你的做法真的不像Laravel。尝试看看一些在 L5 甚至 L4 中完成的开源项目。尝试使用泰勒已经为你做的一切。文档是您的朋友。
根据@Kyslik 对中间件的回应,您可以在您的 RouteServiceProvider 中 "include" 您自己的路由文件,就像默认路由文件一样,RouteServiceProvide 位于:app/Providers/RouteServiceProvider.php,
查找部分
require app_path('Http/routes.php');
并且只需复制您想要包含的路由文件的名称