身份验证重定向和安全性做得对吗?

时间:2015-08-24 17:17:40

标签: laravel-5.1

我正在构建一个应用程序,在一般公共页面旁边将有一个登录页面和每3个角色级别的3个仪表板版本。

Schema::create('users', function (Blueprint $table) {
        $table->increments('id');

        $table->string('firstname');
        $table->string('surname');
        $table->string('username');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->string('role');
        $table->rememberToken();

        $table->datetime('created_at');
        $table->datetime('updated_at');
    });

我有另一张表Roles:

Schema::create('roles', function (Blueprint $table) {

        $table->increments('id');
        $table->string('role_type');

    });

关系

Users::hasOne('roles');
Roles::hasMany('users');

基本上在登录功能上我想检查用户的role_type,然后根据角色重定向它们。

我想知道这个表结构和想法是否被正确考虑过。 此外,当用户访问特定路由时,我将使路由在没有用户时显示登录,如果用户登录则显示404/503但与特定role_type不匹配。

谢谢你们

1 个答案:

答案 0 :(得分:2)

在您的用户表格而不是您拥有的角色列上,应该是以下两行:

$table->integer('role_id')->unsigned()->nullable();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('set null');

这样做的缺点是它允许' role_id'的空值。用户专栏。它需要这个的原因是处理如果删除分配给用户的角色会发生什么。

但更好的解决方案是使用多对多关系,我个人建议使用Entrust,因为它具有您想要内置的内容,以及您以后可能需要的更多选项。