Я создал очень простую систему входа в систему, используя CakePHP, но теперь у меня есть несколько вопросов:
1.) Как отобразить сообщение setFlash
при входе пользователя в систему? Я попытался добавить один в метод входа в систему, но тогда он просто будет показывать его все время при посещении страницы входа в систему и не будет отображаться при успешном входе в систему? Но работает ли метод выхода из системы?
2.) Когда пользователи входят в систему, они ВСЕГДА попадают на домашнюю страницу из-за loginRedirect, но как мне отправить их на страницу, на которой они находятся в данный момент? Поскольку форма входа в систему находится в заголовке общедоступных страниц, поэтому при входе в систему я хочу, чтобы их отправили обратно на ту же страницу.
Вот код, который я сейчас использую в моем app_controller.php
var $components = array('Auth','Session');
function beforeFilter()
{
$this->Auth->authorize = 'actions';
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
$this->Auth->logoutRedirect = array('controller' => 'home', 'action' => 'index');
}
а вот мой users_controller.php
/**
* Log in
*/
function login ()
{
$this->Session->setFlash('You\'re now logged in');
$this->layout = 'login';
$this->set('title_for_layout', 'Log in');
}
/**
* Log out
*/
function logout ()
{
$this->Session->setFlash('<div class="content"><h2>Pow</h2><p>Moo</p></div>');
$this->redirect($this->Auth->logout());
}
и вот форма входа в систему, которая находится в заголовке каждой общедоступной страницы (обратите внимание, что у меня также есть отдельная страница входа в систему, которая содержит ту же форму):
<?php echo $this->Form->create('User', array('id' => 'loginform', 'type' => 'post',
'url' => array('controller' => 'users', 'action' => 'login'))); ?>
<fieldset id="login">
<ul class="clearfix">
<li id="li-username">
<?php echo $this->Form->input('username', array('label'=>false,'placeholder'=>'Username or email address')); ?>
</li>
<li id="li-password">
<?php echo $this->Form->input('password', array('type'=>'password','label'=>false,'placeholder'=>'Password')); ?>
<span id="iforgot"><?php echo $this->Html->link('?',
array('controller' => 'users', 'action' => 'forgotpassword'), array('title' => 'Forgot your password?')); ?></span>
</li>
<li id="li-submit">
<button type="submit" title="Log in">Log in ►</button>
</li>
</ul>
</fieldset>
<?php echo $this->Form->end(); ?>