[英]redirect user to a a page after he login
我的主页上有一个链接“创建帖子”以创建新帖子( <a href="{!! route('post.create') !!}">Create Post</a>
)。
单击此链接后,如果用户通过了身份验证,则应允许他访问此创建帖子页面。
但是,如果用户未通过身份验证,则应将其重定向到登录/注册页面。 登录后,应将他重定向到创建帖子页面。
我有下面的代码来执行此操作,但是当用户没有帐户并单击“创建帖子”时,如果用户登录出现错误,他将被重定向到登录页面:
Type error: Argument 2 passed to App\Http\Controllers\Auth\LoginController::authenticated() must be an instance of App\Http\Controllers\Auth\User, instance of App\User given.
路线:
Route::group(['prefix' => 'users ', 'middleware' => 'auth'], function(){
Route::post('/post/store', [
'uses' => 'PostController@store',
'as' => 'post.store'
]);
Route::get('/createPost', [
'uses' => 'PostController@create',
'as' => 'post.create'
]);
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
登录控制器:
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
protected function authenticated(Request $request, User $user)
{
return redirect()->intended('/createPost');
}
}
您想使用intended
方法重定向到他们尝试访问的页面。
重定向器上的预期方法会将用户重定向到他们尝试访问的URL,然后再被身份验证中间件拦截。 在预期的目标不可用的情况下,可以为此方法提供后备URI。
您看到的是由于传入的User
模型实例应该是Illuminate\\Contracts\\Auth\\Authenticatable
。 从方法签名中删除类型提示,它应该可以工作:
protected function authenticated(Request $request, $user)
{
return redirect()->intended('/createPost');
}
确保您的User
模型实现了Illuminate\\Contracts\\Auth\\Authenticatable
合同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.