我正在使用laravel 5.1.8。 我正在建立登录/注册系统。 我创建了一个名为AdminController的控制器,并用中间件保护它。
但我正在使用laravel的默认AuthController,哪些方法和类位于不同的位置。路线是:
Route::Controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);
get('admin', 'AdminController@index');
get('profile', 'AdminController@profile');
get('article', 'AdminController@article');
用户无法登录时无法访问AdminController。它会重定向到登录页面。但我想,如果登录用户在浏览器的地址栏上键入登录页面的地址或注册,该页面将重定向到AdminController。
当我尝试这样做时,它会寻找'/ home'并给出错误。我想把它变成'/ admin'。
答案 0 :(得分:37)
App\Http\Middleware\RedirectIfAuthenticated
然后从更改它
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('/home');
}
return $next($request);
}
到
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('/admin');
}
return $next($request);
}
答案 1 :(得分:4)
将此添加到您的body,
html {
margin: 10px;
}
#myForm .group-change {
float: right;
}
@media (max-width: 767px) {
#myForm .btn.btn-embossed {
width: 100%;
}
#myForm input,
#myForm .dropdown-toggle {
margin-top: 10px;
}
}
:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="panel panel-default borderless-panel db-panel">
<div class="panel-body db-panel-body">
<form id="myForm" class="form-inline" role="form"> <a href="app-add-campaign.html" class="btn btn-embossed btn-primary">Add New Campaign</a>
<div class="group-change">
<input type="text" class="form-control hasDatepicker" value="14 March, 2013" id="datepicker-01">
<div class="input-group">
<input type="text" class="form-control" value="14 March, 2013" id="datepicker-01"> <span class="input-group-btn" role="group" aria-label="...">
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button"><span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li><a href="#">Today</a>
</li>
<li><a href="#">Yesterday</a>
</li>
<li><a href="#">Last Week</a>
</li>
<li><a href="#">Last Month</a>
</li>
<li><a href="#">Custom Date</a>
</li>
</ul>
</span>
</div>
</div>
</form>
</div>
</div>
</div>
这会告诉各种特征中的所有重定向方法重定向到那里而不是AuthController
。
答案 2 :(得分:0)
当用户成功通过身份验证后,他们将被重定向到/ home URI,您需要注册要处理的路由。您可以通过在AuthController上定义redirectPath属性来自定义验证后重定向位置:
protected $ redirectPath =&#39; / dashboard&#39;;
答案 3 :(得分:0)
在\App\Http\Middleware\RedirectIfAuthenticated::class
中间件之后,在$ middlewareGroups“网络”数组中包括\Illuminate\Session\Middleware\StartSession::class
中间件
然后使用RedirectIfAuthenticated的handle()
方法修改您的重定向路径
public function handle($request, Closure $next, $guard = null)
{
//check if authenticate && second is condition when we need to redirect i.e,
if(Auth::guard($guard)->check() && $request->route()->named('login') ) {
return redirect()->route('dashboard');
}
return $next($request);
}
答案 4 :(得分:0)
您可以使用身份验证功能进行检查。
public function checkLogin()
{
if (auth()->user())
{
return redirect(route('home'));
}
else
{
return redirect(route('login'));
}
}