2

在哪些方面做改变所以检查了?我不想检查兼容性重复字段的密码字段。

我在 Kohana 用户控制器中的添加功能

public function action_add() {
        $title = 'Add User';
        $this->template->title = $title;
        $this->template->content = View::factory('action/users/add')
                ->bind('title', $title)
                ->bind('message', $message)
                ->bind('errors', $errors);

        if (HTTP_Request::POST == $this->request->method()) {
            try {

                // Create the user using form values
                $user = ORM::factory('user')->create_user($this->request->post(), array(
                    'username',
                    'password',
                    'email',
                    'last_name',
                    'first_name',
                    'middle_name'
                        ));

                // Grant user login role
                $user->add('roles', ORM::factory('role', array('name' => 'login')));

                // Reset values so form is not sticky
                $_POST = array();

                Session::instance()->set('message', "You have added user '{$user->username}' to the database");
                Request::current()->redirect('/admin/' . $this->request->param('lang') . '/action/users' );
            } catch (ORM_Validation_Exception $e) {

                // Set failure message
                $message = 'There were errors, please see form below.';

                // Set errors using custom messages
                $errors = $e->errors('models');
            }
        }
    }
4

1 回答 1

0

我认为您可以直接使用 ORM::create() 方法,

http://kohanaframework.org/3.3/guide-api/Model_Auth_User#create_user

ORM::create_user() 所做的是验证密码,这正是你想要跳过的

http://kohanaframework.org/3.3/guide-api/Model_Auth_User#create_user

所以你应该使用类似的东西

  $user = ORM::factory('user')->values($this->request->post(), array(
                'username',
                'password',
                'email',
                'last_name',
                'first_name',
                'middle_name'
                    ))->create();

避免调用 create_user,您也将避免密码长度验证,因此通常您将在模型中添加此规则,但由于密码获取哈希,您应该在控制器处理它,我看到您没有使用任何验证或过滤器对于 $POST 数据,我建议您使用 Validator 对象

http://kohanaframework.org/3.3/guide-api/Validation

有了它,您可以限制密码长度

于 2013-03-01T15:40:07.953 回答