0

私は非常に大きなプロジェクトで Cakephp 2.3 に取り組んでおり、私のサイトを世界中に立ち上げようとしています。

アプリにログイン システムがあります。コーディングが正しいかどうかを確認したいので、コードを共有しています...また、不足している機能がないかどうか、またはコードに何かを追加または削除するアドバイスがあるかどうかを確認したいので、大歓迎です。また、セキュリティの観点からもコメントしてください...
私のウェブサイトを高速化するためのヒントを教えてください..たとえば、より高速なクエリを作成したり、このブラブラから不要なものを削除したりする方法

class UsersController extends AppController
{

    public $components = array('Cookie');

    public function beforeFilter()
    {
        parent::beforeFilter();
        App::uses('Utility', 'Utility');
        $this->Auth->allow('index');
        $this->Security->requireSecure('login'); // for security

        $this->Auth->authenticate = array(
            'Authenticate.Cookie' => array(
               'fields' => array(
                    'username' => 'email',
                    'password' => 'password'
               ),
                'userModel' => 'User',
                'scope' => array(
                   'User.active' => 1
                )
            ),
            'Authenticate.MultiColumn' => array(
                'fields' => array(
                    'username' => 'email',
                    'password' => 'password'
                ),
                'columns' => array(
                    'email',
                    'mobileNo'
                ),
                'userModel' => 'User'
            )
        );
    }



public function index()
{
    $this->layout = 'logindefault';

    if (!$this->Auth->login() || !$this->Auth->loggedIn()) {

        $this->redirect(array(
            'controller' => 'users',
            'action' => 'login'
        ));

    } else {
        $this->redirect(array(
            'controller' => 'users',
            'action' => 'dashboard'
        ));
    }

}


public function login()
{

    $this->layout = 'logindefault';
    $this->set('title_for_layout', 'Account Login');




    if ($this->Auth->login() || $this->Auth->loggedIn()) {


        $lastLogin = $this->Auth->User('lastLogin');

        if ($lastLogin != null) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->redirect(array(
                'controller' => 'Userinfo',
                'action' => 'gettingstarted'
            ));

        }

    } else {

        if ($this->request->is('post')) {

            $mobileNo = $this->request->data['User']['email'];

            $mobileNo = Utility::addPlusToMobileNo($mobileNo);

            $this->request->data['User']['email'] = $mobileNo;




            if ($this->Auth->login() || $this->Auth->loggedIn()) {
                if ($this->Session->check('Auth.User')) {

                    $this->_setCookie($this->Auth->user('idUser'));

                    $lastLogin = $this->Auth->User('lastLogin');
                    if ($lastLogin != null) {
                        $this->redirect(array(
                            'controller' => 'users',
                            'action' => 'dashboard'
                        ));
                    } else {

                        $this->redirect(array(
                            'controller' => 'Userinfo',
                            'action' => 'gettingstarted'
                        ));

                    }
                }
            } else {
                $this->Session->setFlash('Incorrect Email/Password Combination'); 
            }
        }
    }
}



protected function _setCookie($id)
{
    if (!$this->request->data('User.remember_me')) {
        return false;
    }
    $data = array(
        'username' => $this->request->data('User.email'),
        'password' => $this->request->data('User.password')
    );
    $this->Cookie->write('User', $data, true, '1 week');
    return true;
}


public function logout()
{
    $this->Cookie->delete('User');
    $this->redirect($this->Auth->logout());
}
4

1 に答える 1