我正在使用基于服务器的身份验证,因此我尝试在Yii中实现自定义登录系统。为了学习系统,我尝试创建一个自动登录用户的虚拟身份验证类。我在配置中包含了该类,但我无法弄清楚如何在用户中登录。
有没有办法在第一次使用应用程序时自动登录(例如,在创建会话时?)或者是否有更好的方法来实现此目的?
这是一个自定义身份验证类:
class MyAuthentication
extends CApplicationComponent
implements IUserIdentity {
private $_username = '';
private $_authenticated = False;
...
public function authenticate()
{
$this->_username = 'exampleUser';
$this->_authenticated = True;
return True;
}
public function getIsAuthenticated()
{
return $this->_authenticated;
}
答案 0 :(得分:1)
class UserIdentity extends CUserIdentity
{
private $_username = '';
private $_authenticated = FALSE;
public function authenticate()
{
$this->_username = 'exampleUser';
$this->_authenticated = TRUE;
return $this->_authenticated;
}
public function getIsAuthenticated()
{
return $this->_authenticated;
}
}
答案 1 :(得分:1)
为Controller创建过滤器并检查用户是否已经过身份验证。如果没有,请对用户进行身份验证。
答案 2 :(得分:1)
由于我的身份验证基于服务器端变量,因此我能够使用accessRules数组的expression
功能来检查该变量是否为true。我写了一个自定义类来帮助:
class User
{
public function is_authenticated()
{
return True;
}
}
并更新了我的规则以使用表达式检查而不是用户检查as described by the documentation:
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index','view', 'new'),
'expression'=>'User::is_authenticated()',
...