【发布时间】:2015-08-13 13:59:30
【问题描述】:
好的,所以我有一个基本的消息系统,我已经建立了一个关系,所以我可以调用$user->messages 来检索一组用户收件箱消息。我还有一个非常简单的 show 方法,目前只抓取带有传递给 show() 函数的 id 的消息。
问题是保护该 messages/2 URL 的最佳方法是什么,这样用户就不能只在 URL 中键入任何数字并访问其他用户的消息。
我是否应该使用路由过滤器并基本上运行另一个查询以确保用户可以访问消息 ID,或者我可以对关系做些什么,也许检查消息数组的 ID,如果它存在则用户必须有访问权限?
public function up()
{
Schema::create('messages', function(Blueprint $table) {
$table->increments('id');
$table->mediumText('subject');
$table->text('message');
$table->boolean('draft');
$table->integer('sender_id')->unsigned();
$table->softDeletes();
$table->timestamps();
$table->foreign('sender_id')->references('id')->on('users')->onUpdate('cascade');
});
Schema::create('message_assets', function(Blueprint $table) {
$table->increments('id');
$table->integer('message_id')->unsigned();
$table->string('filename', 255);
$table->softDeletes();
$table->foreign('message_id')->references('id')->on('messages')->onUpdate('cascade');
});
Schema::create('message_users', function(Blueprint $table) {
$table->increments('id');
$table->integer('message_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->integer('read')->default(0);
$table->string('folder', 255)->nullable();
$table->softDeletes();
$table->foreign('message_id')->references('id')->on('messages')->onUpdate('cascade');
$table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade');
});
}
【问题讨论】:
标签: laravel laravel-4 routing models relationships