我有一个我无法解决的奇怪问题。
当用户注册后,我会将其重定向到Feed网址,打开模式并通过点击我发送给他们的电子邮件链接告诉我的用户激活他的帐户。但在我点击链接后,我会继续被重定向到完全相同的页面(Feed),并且我的帐户未被激活。这可能是什么问题?
routes.php文件
Route::group(['namespace' => 'Auth'], function ()
{
Route::group(['middleware' => 'auth'], function ()
{
Route::get('activate/{token}', 'PasswordController@activate');
});
});
PasswordController
public function activate($token) {
//get token value.
// find the user that belongs to that token.
$activation = User::where("confirmation_code", $token)->get()->first();
$activation->confirmed = 1;
$activation->save();
}
RedirectIfAuthenticated.php如果我删除了Feed网址,它就可以了。但我不想这样做。
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('/feed');
}
return $next($request);
}
答案 0 :(得分:1)
假设您使用laravel默认身份验证系统。执行以下操作。
在AuthController中添加方法。这将创建用户,但不会将其登录,因为他们尚未激活他们的帐户。请注意laravel会自动登录用户,因此下面的功能会覆盖默认行为。
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$this->create($request->all());
return redirect('/feed');
}
在RedirectIfAuthenticated.php中删除'/feed'
,而是有一个网址,用户登录后会被重定向。由于有了Feed,用户会将用户重定向到页面,要求他们每次登录时都要激活该帐户。
在密码控制器的激活功能中,没有关于激活用户后应该做什么的逻辑。在$ activation-> save()
之后添加以下行Auth::login($activation);
return redirect('/');