Php Laravel创建重新激活按钮错误
我想创建一个重新激活帐户选项,以便用户在停用帐户后,可以始终单击“重新激活”并返回 现在的问题是,当我点击应该调用控制器函数的链接时,它不工作,无论我做什么,它都会返回到Php Laravel创建重新激活按钮错误,php,laravel,middleware,Php,Laravel,Middleware,我想创建一个重新激活帐户选项,以便用户在停用帐户后,可以始终单击“重新激活”并返回 现在的问题是,当我点击应该调用控制器函数的链接时,它不工作,无论我做什么,它都会返回到/auth页面 下面是我的中间件: public function handle($request, Closure $next) { if (!Auth::check()) { if ($request->ajax()) { return response('Unautho
/auth
页面
下面是我的中间件:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('/');
}
}
else
{
$user = Auth::user();
if (!$user->activated) {
$activation = action('Auth\AuthController@getActivationMail', ['username' => $user->username]);
Auth::logout();
return redirect()->guest('auth')
->withErrors(array('message' => 'Please activate your account. Re-send your activation by clicking <a href=' . $activation . '>here</a>.'));
}
// the main code starts here
else if (!$user->enabled) {
$reactivation = action('UserController@postActivateUser');
Auth::logout();
//$reactivation = $user->enabled = 1;
//$user->save();
return redirect('/auth')->withErrors(array('message' => 'Your account has been deactivated. You can reactivate your account by clicking <a href='. $reactivation .'> Here </a>.'))->withInput();
}
$user->runDailyNotifications();
}
return $next($request);
}
因此,我创建了一个类似的:
public function postActivateUser(Request $request)
{
$user = Auth::user();
$user->enabled = 1;
$user->save();
return response()->json(['result' => true, 'msg' => 'Your account has been activated.']);
}
路线:
Route::get('auth/activate', 'UserController@postActivateUser');
我不知道我能做些什么才能使它正确,谢谢所有帮助我的人。你在运行什么Laravel版本? 您的中间件要求用户必须登录才能激活其帐户,否则会重定向到auth屏幕
if (!Auth::check()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('/');
}
}
您应该从中间件中排除激活路由,并使用激活令牌来识别未经身份验证的用户并重新激活其帐户
将这一行放在路由文件中auth中间件的外部
Route::get('auth/activate', 'UserController@postActivateUser');
然后使用postActivateUser方法,您应该根据激活url和User::findByToken根据您的数据库字段更改请求->令牌参数名称
public function postActivateUser(Request $request)
{
// get the user from activation token
$user = User::findByToken($request->token);
$user->enabled = 1;
$user->save();
return response()->json(['result' => true, 'msg' => 'Your account has been activated.']);
}
你好我已经将路由放入route.php文件,并将UserController更改为您提到的函数,但是如果您的Kernel.php中有“auth”中间件,它仍然不起作用(与以前相同的问题,没有错误消息)。这将不起作用。不幸的是,它在Kernel.php中,现在我不确定要做什么您可以尝试一下,但这是L 5.3的
public function postActivateUser(Request $request)
{
// get the user from activation token
$user = User::findByToken($request->token);
$user->enabled = 1;
$user->save();
return response()->json(['result' => true, 'msg' => 'Your account has been activated.']);
}