我在zend框架中有以下场景:
学生数据表班级表,每个班级包含多名学生。分配表,每个分配表被分配到一个类,并给出一个口令
我希望学生能够在给定作业id和共享密码的情况下访问作业,但要让应用程序记录是哪个学生登录了作业。然而,Zend_Auth希望一个表同时包含用户名和密码,但在我的情况下,用户名在students表中,密码在assignments表中。
谁能建议一个好的方法来处理学生登录,他们都可以共享一个密码。一种只使用用户名而不使用密码进行身份验证的方法是可行的,因为这样我就可以在一个单独的条件中进行密码检查。
发布于 2009-10-19 06:18:17
我认为你最好的选择就是编写你自己的适配器。像这样的东西很可能会起作用:
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
}
}
发布于 2009-10-19 03:36:14
共享密码是一个非常糟糕的主意。如果您共享密码,那么另一个学生只需要学习一个id --通常不是高度安全的信息--就可以像另一个学生一样访问资源。更好的解决方案是使用角色来控制对作业的访问,并将需要访问作业的学生放在该角色中。这样,每个学生仍然可以访问作业,并保留自己的id/密码对。有关roles and how to use them的信息,请参阅Zend文档。
https://stackoverflow.com/questions/1588114
复制