laravel重定向,如果登录

时间:2015-08-20 23:05:29

标签: php authentication redirect laravel-5.1

我正在使用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'。

5 个答案:

答案 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'));
    }
}