zend中多用户的密码相同

时间:2009-10-19 11:12:32

标签: zend-framework authentication

我在zend框架中有以下场景:

数据 学生表 课程表,每个课程包含许多学生。 分配表,每个分配给一个类并给出一个密码

我希望学生能够根据作业的ID和共享密码访问作业,但是应用程序要注意哪个学生已登录作业。 Zend_Auth但是希望一个表包含用户名和密码,但在我的情况下,用户名在学生表中,密码在assignments表中。

任何人都可以建议一个处理学生登录的好方法,他们可以共享一个密码。只使用用户名和密码进行身份验证的方法是可行的,因为我可以在单独的条件中进行密码检查。

2 个答案:

答案 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文档