Вход в CakePHP с разных точек зрения - PullRequest
0 голосов
/ 06 июля 2018

Я использую CakePHP 3.6 и хочу разрешить пользователю входить в систему из разных представлений. У меня есть 2 одинаковые формы, но одна на каждой странице, а другая только на 1 странице.

Позвольте мне показать вам, что:

You can see this mini form is on every page

You can see this mini form is on every page

You can see that this page has the two forms that are the same.

Вот моя функция инициализации AppControler

public function initialize()
{
    parent::initialize();

    $this->loadComponent('RequestHandler', [
        'enableBeforeRedirect' => false,
    ]);
    $this->loadComponent('Flash');
    $this->loadComponent('Auth', [
        'authorize'=> 'Controller',
        'authenticate' => [
            'Form' => [
                'fields' => [
                    'username' => 'email',
                    'password' => 'password'
                ]
            ]
        ],
        'loginAction' => [
            'controller' => 'Users',
            'action' => 'login'
        ],
         // If unauthorized, return them to page they were just on
        'unauthorizedRedirect' => $this->referer()
    ]);

}

Вот моя функция входа в UsersController:

public function login()
{

    if($this->request->is('post')) {
        $user = $this->Auth->identify();
        if($user) {
            $this->Auth->setUser($user);
            $this->Flash->success('You logged succesfully!');
            return $this->redirect($this->referer());
        }

        // Invalid login
        $this->Flash->error('Incorrect login');
    }
}

Вот форма (помните, что они одинаковы):

<?php if(!$loggedIn): ?>
    <?= $this->Form->create(null, ['class' => 'form-signin']) ?>

        <h2 class="form-signin-heading">Login</h2>
        <?= $this->Form->input('email', ['required' => true, 'class' => 'form-control', 'placeholder' => 'Email', 'label' => false]) ?>
        <?= $this->Form->input('password', ['type' => 'password', 'required' => true, 'class' => 'form-control', 'placeholder' => 'Contraseña', 'label' => false]) ?>
        <?= $this->Form->input('remember', ['type' => 'checkbox', 'value' => 'remember-me']) ?>
        <?= $this->Form->submit('Entrar', ['class' => 'btn btn-lg btn-primary btn-block' ]); ?>

    <?= $this->Form->end() ?>
<?php endif; ?>

Проблема кажется мне достаточно очевидной, но я не знаю, как ее решить. Форма, которая есть во всех представлениях, не работает, а только в представлении «Пользователи». Похоже, что действие входа в систему работает, только если я нахожусь в представлении Пользователи ...

Спасибо!

1 Ответ

0 голосов
/ 06 июля 2018

просто измените на URL в форме, которая есть в каждом представлении, чтобы данные POST отправлялись пользователям / логин

echo $this->Form->create(null, [
    'class' => 'form-signin', 
    'url' => ['controller' => 'Users', 'action' => 'login']
]); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...