我没有使用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>
我的问题是登录后重定向到登录页面。它应该重定向到用户想要走的原始路径
答案 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!');
另一种方法是在执行操作时使用中间件,但要检查请求是否具有“特殊属性”,该属性定义了应将用户重定向到的位置。