我正在研究一个Laravel项目 . 该项目有一个公共的(未经过身份验证的网站部分)和一个经过身份验证的部分(管理员) .
我正在尝试使用/ route显示公共主页视图,然后在进行身份验证时,我希望显示管理身份验证视图的相同/路由 .
这是尝试的代码:
routes.php
Route::auth();
Route::get('/', function () {
return view('Public.home');
});
Route::group(['middleware' => ['auth']], function () {
Route::get('/', function () {
return view('Authenticated.home');
});
});
Problem 当我注销并尝试访问/ route时,公共控制器(Public.home)被视为经过身份验证的路由(位于上面路由组中的'auth'中间件下) .
中间件身份验证设置为重定向到/当访问任何受保护(经过身份验证的)路由时 .
Authenticate.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
}
return redirect()->guest('/');
}
return $next($request);
}
}
我正在使用Laravel 5.2 .
1 回答
有几种方法可以解决这个问题 .
第一种方法是从
auth
中间件中排除('/')
路由并编写自己的路由以检查它们是否已登录,并根据该路径返回相应的视图 .像这样的东西可以做到这一点:
有关编写自己的中间件的更多信息,请参阅相关文档 .
或者,您可以创建一个视图
('home')
,然后使用和if
语句检查它们是否已登录 .像这样的东西可以做到这一点: