我在zend框架中有以下场景:
数据 学生表 课程表,每个课程包含许多学生。 分配表,每个分配给一个类并给出一个密码
我希望学生能够根据作业的ID和共享密码访问作业,但是应用程序要注意哪个学生已登录作业。 Zend_Auth但是希望一个表包含用户名和密码,但在我的情况下,用户名在学生表中,密码在assignments表中。
任何人都可以建议一个处理学生登录的好方法,他们可以共享一个密码。只使用用户名和密码进行身份验证的方法是可行的,因为我可以在单独的条件中进行密码检查。
答案 0 :(得分:1)
我认为你最好的选择就是编写自己的适配器。这样的事情最有可能奏效:
class MyAuthAdapter implements Zend_Auth_Adapter_Interface
{
protected $_username;
protected $_password;
protected $_assignment_id;
/**
* Sets username, password, and assignemnt ID for authentication
*
* @return void
*/
public function __construct($username,$password,$assignment_id)
{
$this->_username = $username;
$this->_password = $password;
$this->_assignment_id = $assignment_id;
}
/**
* Performs an authentication attempt
*
* @throws Zend_Auth_Adapter_Exception If authentication cannot
* be performed
* @return Zend_Auth_Result
*/
public function authenticate()
{
// logic here to check everything out and erturn a new Zend_Auth_Result
}
}
答案 1 :(得分:0)
共享密码是一个非常糟糕的主意。如果您共享密码,那么另一名学生只需要学习一个id - 通常不是高度安全的信息 - 就像另一个学生一样访问资源。更好的解决方案是使用角色来控制对作业的访问,并将需要访问作业的学生放入角色中。这样,每个学生仍然可以访问作业并保留自己的ID /密码对。有关roles and how to use them。
的信息,请参阅Zend文档