我已经通过zend auth建立了一个登录系统,这是代码
// userAuthentication
public function authAction(){
$request = $this->getRequest();
$registry = Zend_Registry::getInstance();
$auth = Zend_Auth::getInstance();
$DB = $registry['DB'];
$authAdapter = new Zend_Auth_Adapter_DbTable($DB);
$authAdapter->setTableName('user')
->setIdentityColumn('user_name')
->setCredentialColumn('user_password');
$username = $request->getParam('username');
$password = $request->getParam('password');
$authAdapter->setIdentity($username);
$authAdapter->setCredential($password);
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
$data = $authAdapter->getResultRowObject(null,'password');
$auth->getStorage()->write($data);
$this->_redirect('/login/controlpannel');
}else{
$this->_redirect('/login/login');
}
}现在可以正常工作了。user (表)中有user_id (列),其中也有用户名和密码。我需要从这个表中获取特定的user_id,它只需登录并通过
$user_session = new Zend_Session_Namespace('user_session');
$user_session->username = $username;
$user_id->user_id = $user_id;这样我就可以根据这个$user_id查询一些信息,并将结果传递到视图(名称)控制面板中
发布于 2012-01-25 19:41:16
从存储中获取用户id:
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
echo $userInfo->user_id;发布于 2012-05-10 02:41:43
虽然这个问题已经得到了回答,但我倾向于比getStorage()->read()链更频繁地使用getIdentity()函数。下面是一些例子。
// to check if authenticated
Zend_Auth::getInstance()->hasIdentity();
// to actually get the details from storage
Zend_Auth::getInstance()->getIdentity()->user_id;
// if I need to use the identity over and over
$identity = Zend_Auth::getInstance()->getIdentity();
$userId = $identity->user_id;发布于 2012-01-25 19:43:09
您可以按照Teez建议的方式访问数据,也可以直接从Zend_Session_Namespace获取数据。
15.1.3.1。PHP会话中的缺省持久性
默认情况下,Zend_Auth使用PHP为成功的身份验证尝试提供持久的身份存储。在一次成功的身份验证尝试之后,Zend_Auth::authenticate()将身份验证结果中的身份存储到持久存储中。除非另行配置,否则Zend_Auth将使用名为Zend_Auth_Storage_Session的存储类,而后者又使用Zend_Session。相反,可以通过向Zend_Auth::setStorage()提供实现Zend_Auth_Storage_Interface的对象来使用自定义类。
Zend_Auth_Storage_Session使用会话命名空间'Zend_Auth‘。可以通过向Zend_Auth_Storage_Session的构造函数传递不同的值来覆盖此命名空间,该值在内部传递给Zend_Session_Namespace的构造函数。这应该在尝试身份验证之前发生,因为Zend_Auth::authenticate()执行身份的自动存储。
https://stackoverflow.com/questions/9001847
复制相似问题