laravel登录后重定向到原始路径(不使用laravel make:auth)

时间:2018-08-08 09:10:38

标签: laravel

我没有使用laravel make:auth,而是创建了自己的登录页面。 我有此按钮“分享您的冒险经历”,如果用户单击该按钮,则应该将他重定向到Adventurefor.blade.php(如果他已经登录,但是如果他当前尚未登录,那么他将被重定向到登录名)使用中间件的页面。

这是我的web.php

 public function login(){

    return view('logs.login');
}
 public function submit(Request $request){
    $this->validate($request,[
        'email' => 'required',
        'password' => 'required'
    ]); 


        if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']]))
            {

        return Redirect::to(URL::previous())
                                -> with('info', 'Logged In Successfully!'); 

            }
        else{
            return redirect('logs.login') -> with('infos', 'Incorrect Email/Password!');
        }

 public function shareadven(){

    return view('adventure.adventureform');
}

这是我的控制器

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class User
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if( Auth::check()){

    return $next($request);

}

    return redirect('login');
}
}

这是我创建的中间件

<a class="btn btn-primary btn-lg" href="{{ url('share') }}" role="button">Share your ADVENTURES</a>

这是我的按钮的代码

<ng-template #tmpl>
    <ul>
    <li> ... </li>
    <li> ...</li>
    </ul>
</ng-template>

我的问题是登录后重定向到登录页面。它应该重定向到用户想要走的原始路径

1 个答案:

答案 0 :(得分:0)

您可以遵循Laravel特性AuthenticateUsers的逻辑,该逻辑在登录后重定向到intended路径。

这是Laravel的来源:

/**
  * Send the response after the user was authenticated.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();

    $this->clearLoginAttempts($request);

    return $this->authenticated($request, $this->guard()->user())
            ?: redirect()->intended($this->redirectPath());
}

从以下位置更改您的控制器

return Redirect::to(URL::previous())->with('info', 'Logged In Successfully!');

return Redirect::intended('your-path')->with('info', 'Logged In Successfully!');

另一种方法是在执行操作时使用中间件,但要检查请求是否具有“特殊属性”,该属性定义了应将用户重定向到的位置。