ark*_*Dev 2 php acl laravel laravel-4
我正在学习如何使用Cartalyst/Sentinel.
我有
1)安装Laravel并导入包.运行迁移并生成必要的表.2)我创建了用户注册表和控制器
如果用户通过单击链接激活,则他们可以登录.
如果他们不激活他们不能(这是我想要的).
我的问题是我有以下方法试图捕获是否存在NotActivatedException.我想将用户重定向到主页,提醒用户该帐户未激活.但我得到Laravel错误消息而不是我的视图显示错误.这是我的代码.
public function postSignin(){
try {
// Validation
$validation = Validator::make(Input::all(), [
'email' => 'required|email',
'password' => 'required'
]);
if ($validation->fails()) {
return Redirect::route('signin')->withErrors($validation)->withInput();
}
$remember = (Input::get('remember') == 1) ? true : false;
if ($user = Sentinel::authenticate(Input::all(), $remember)) {
return Redirect::route('home')->with('global', 'Howdy ' . $user->username . '!');
}
$errors = 'Invalid Email / Password';
return Redirect::route('signin')->with('global', $errors);
} catch (NotActivatedException $e) {
$errors = 'Account not activated.';
return Redirect::route('signin')->with('global', $errors);
}
return Redirect::route('home')->with('global', 'There was a problem signing you in.');
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么捕获不起作用,因为我想显示登录页面,错误指出"帐户未激活".相反,我得到了这样的Laravel调试页面.

您必须使用完整的类名:
catch (\Cartalyst\Sentinel\Checkpoints\NotActivatedException $e)
Run Code Online (Sandbox Code Playgroud)