管理员,教师和学生,如果学生未注销并且您打开了一个新选项卡试图访问管理员,您将绕过登录

时间:2018-05-28 18:14:30

标签: javascript php html

我创建了一个项目,因为它有管理员,老师和学生。他们都有登录表单,并根据登录的人重定向到不同的,因此我有3个文件夹学生文件夹,管理员文件夹和教师文件夹,每个登录页面将把他们带到他们的文件夹中的相应页面,但不会破坏会话它将用户重定向到管理页面的内容。我个人认为这是因为我把

public function index(){

        $users = DB::connection('dpnmwin')->table('nmtrabajador')->where('CONDICION', '=', 'A')->get();

        return view('users.list',array(
            'users' => $users
        ));

    }

到每个页面。请帮助我添加什么,以确保每个用户都可以访问他们需要访问的内容

1 个答案:

答案 0 :(得分:0)

这里至少有2个问题:

  1. 您认为打开新标签页不应与其他标签共享会话。我不记得PHP会话的细节。但是,afaik,状态存储在服务器上,它使用一些魔法如cookie来确定你正在使用的会话。问题是两个不同的选项卡几乎不会启动新会话。事实上,我看到的唯一可能性是会话ID是否与每个请求一起作为url或header传递 - 然后你可以选择正确的会话...这很少被使用,因为需要这种方法的用例是有限。 (tbh,在2个选项卡中运行2个不同的会话并不是一个非常真实的场景)。如果您确实想在同一台计算机上运行单独的会话,则可以尝试运行多个隐身窗口。
  2. 其次,更重要的问题是你的应用背后的逻辑。进入任何页面的可能性,一旦您通过任何用户的登录,意味着向您的系统提供3次登录的仪式完全没用,因为没有内部检查,如果用户有权转到一个或另一页。正确的做法是,一旦您登录,就将角色(学生,教师,管理员)存储为会话参数。然后,在每个页面上,您不仅应验证是否已设置用户名,而且该存储的角色与查看此特定页面所需的角色定义相匹配。如果角色不匹配,那么您应该适当地处理它。您可以将用户注销,或显示访问错误消息并提供链接重定向到允许的页面。