Php 跟踪laravel中注册用户和匿名用户提交的内容
我正在使用Laravel的预构建身份验证代码。我有另一张表,看起来像这样Php 跟踪laravel中注册用户和匿名用户提交的内容,php,mysql,laravel,authentication,Php,Mysql,Laravel,Authentication,我正在使用Laravel的预构建身份验证代码。我有另一张表,看起来像这样 Schema::create( 'submissions', function( Blueprint $table ) { $table->increments( 'id' ); $table->enum( 'complete', [ 'yes', 'no' ] ); $table->string( 'formName' ); $table->timestamps()
Schema::create( 'submissions', function( Blueprint $table ) {
$table->increments( 'id' );
$table->enum( 'complete', [ 'yes', 'no' ] );
$table->string( 'formName' );
$table->timestamps();
// Reference to User ID but only when submitted by a registered user...
//$table->integer( 'user_id' )->unsigned();
//$table->foreign( 'user_id' )->references( 'id' )->on( 'users' );
$table->integer( 'status_id' )->unsigned();
$table->foreign( 'status_id' )->references( 'id' )->on( 'status' );
});
当提交是由注册用户提交时,我希望引用该用户id,但匿名提交是可能的,我需要一些指标,表明提交是由匿名用户提交的
我应该吗
- 为非用户创建实际用户记录
- 更改“我的用户id”外键以允许空值指示另一个用户
谢谢这取决于系统的其他部分 例如,像phpBB和Shimmie这样的项目使用一个真正的Anon用户。但它们以某种方式将该用户标记为来宾帐户。我认为Shimmie在users表中使用了一个标志(即users.is_guest=1),只是将每个来宾验证为该用户以进行权限屏蔽。phpBB我相信会查找具有特定用户类型且在特定组中的用户(即users.user\u type=2&&users.groups.contains(1))。同样,phpBB将来宾身份验证为另一个用户 标记该用户(假设您只有一个非用户用户)的一种简单方法是强制将其PK设置为0或-1。它可以节省数据库中的空间,从本质上防止重复的“来宾”用户,并为您提供一种简单的方法来防止路由显示该用户(
->其中('id','[1-9][0-9]*')
)
另一种选择(没有真正的用户或组)意味着您的授权逻辑需要能够处理未经验证的用户。如果没有关于授权逻辑的更多信息,就很难给出建议
我通常更喜欢使用真正的用户或真正的组来传递给我的授权逻辑。它将使代码中的所有内容保持一致,并在UI中为站点管理员提供一个公共界面来更改来宾权限
这只需要做一点工作,以防止人们通过路由访问该用户,或出现在用户列表中等等。在您的模型上创建一个匿名帐户以过滤非用户用户(您的来宾帐户、任何bot帐户等)可能会有所帮助。创建一个默认匿名使用可能会对您的系统造成其他不必要的后果。i、 电子邮件、个人资料页、链接、奖励、“积分”所有我们不知道的关于您的系统的信息,但这些信息可能会破坏您的系统或产生意外的副作用。将此答案标记为已接受,感谢您提供的信息。基于上述信息和我的用例。我只是在提交时将user_id字段设为空。