简单来说就是登录时实现一个记住密码的功能。
在登录验证中,处理是否需要自动登录功能
复制内容到剪贴板
代码:
class myLogonValidator extends sfValidator
{
public function initialize ($context, $parameters = null)
{
// initialize parent
parent::initialize($context);
// set defaults
$this->getParameterHolder()->set('login_error', 'Invalid input');
$this->getParameterHolder()->add($parameters);
return true;
}
public function execute (&$value, &$error)
{
$autologon_cookie_param = $this->getParameterHolder()->get('autologon_cookie');
$autologon_cookie = $this->getContext()->getRequest()->getParameter($autologon_cookie_param);
$username = $value;
if ( $autoexit_cookie )
sfContext::getInstance()->getResponse()->setCookie('autologon_cookie', '', time()-3600, '/');
else
sfContext::getInstance()->getResponse()->setCookie('autologon_cookie', $username, time()+2592000, '/');
return true;
} 这里如果用户选择了自动登录,那么把$username保存到autologon_cookie中
在lib目录里添加一个myAutologinFilter.class.php并在filters.yml里启用它
复制内容到剪贴板
代码:
class myAutologinFilter extends sfFilter
{
public function execute($filterChain)
{
$autologon_cookie = sfContext::getInstance()->getRequest()->getCookie('autologon_cookie');
if ( $autologon_cookie )
{
$c = new Criteria();
$c->add(MemberPeer::USERNAME,$autologon_cookie );
$member = MemberPeer::doSelectOne($c);
if ( $member )
sfContext::getInstance()->getUser()->signIn($member);
}
$filterChain->execute();
}
} 这里实现一个自动登录的过程
启用它
filters.yml