加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 尚未为用户提供hasher

发布时间:2020-12-13 18:25:26 所属栏目:PHP教程 来源:网络整理
导读:我似乎无法让哨兵工作.我一直收到此错误:没有为用户提供哈希.有谁知道会发生什么? 我在OS X 10.9上运行MAMP. 我使用的是PHP 5.4.4 已安装并启用MCrypt. 尝试在创建新用户时散列密码时会发生此错误. 我们的项目使用laravel Sentry插件. 这是控制器: ?phpus
我似乎无法让哨兵工作.我一直收到此错误:没有为用户提供哈希.有谁知道会发生什么?

我在OS X 10.9上运行MAMP.
我使用的是PHP 5.4.4
已安装并启用MCrypt.
尝试在创建新用户时散列密码时会发生此错误.
我们的项目使用laravel Sentry插件.
这是控制器:

<?php

use Auth,BaseController,Form,Input,Redirect,Sentry,View;

class AuthController extends BaseController {

        public function register()
        {
            return View::make('Auth.register');
        }

        public function handleRegister()
        {
               $validator = Validator::make(Input::all(),User::$rules);

                if ($validator->passes()) {
                    //The registration has passed,create a user

            $user = new User;
                    $user->first_name = Input::get('first_name');
                    $user->last_name = Input::get('last_name');
                    $user->email = Input::get('email');
                    $user->password = Hash::make(Input::get('password'));
                    $user->activated = 1;
                    $user->save();

            //grabbing the Sentry model of the user so we can save it to the appropriate group
            $sentryUser = Sentry::findUserByLogin($user->email);

            if (Input::get('userType') == 'Promoter')
            {
              $group = 'Promoters';
            }
            else
            {
              $group = 'Agents';
            }

            // Find the group using the group id
            $group = Sentry::findGroupByName($group);

            // Assign the group to the user
           $sentryUser->addGroup($group);

                    return Redirect::action('AuthController@login')->with('message','Thanks for registering!');
                } else {
                // validation has failed,display error messages   
                    return Redirect::action('AuthController@register')->with('message','The following errors occurred')->withErrors($validator)->withInput();

                }
        }

        /**
         * Display the login page
         * @return View
         */
        public function login()
        {
                return View::make('Auth.login');
        }

        /**
         * Login action
         * @return Redirect
         */
        public function handleLogin()
        {
                $credentials = array(
                        'email' => Input::get('email'),'password' => Input::get('password')
                );

                try
                {
                        $user = Sentry::authenticate($credentials,false);

                        if ($user)
                        {
                                return Redirect::action('OfferController@offer');
                        }
                }
                catch(Exception $e)
                {
                        return Redirect::action('AuthController@login')->withErrors(array('login' => $e->getMessage()));
                }
        }

        /**
         * Logout action
         * @return Redirect
         */
        public function logout()
        {
                Sentry::logout();

                return Redirect::action('AuthController@login')->with('message','You have been logged out');
        }

}

?>
问题是,当您将Sentry配置为使用User.php作为模型时,它会丢失Sentry hasher.解决方案是在用户注册时设置哈希
$user->setHasher(new CartalystSentryHashingNativeHasher);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读