我遇到了问题,我无法在laravel 5.2中使用政策。
我有2个表,学生和任务。
我尝试应用策略来阻止通过更改网址来编辑任务,但我总是收到消息此操作未经授权,尽管任务是正确的用户。
政策代码:
<?php
namespace App\Policies;
use App\Models\Student;
use App\Models\Task;
class TasksPolicy
{
public function edit(Student $student, Task $tasks)
{
return $student->id === $tasks->student_id;
}
}
AuthServiceProvider.php中的代码
<?php
namespace App\Providers;
use App\Models\Task;
use App\Policies\TasksPolicy;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
Task::class => TasksPolicy::class
];
然后在TaskController.php文件中调用:
public function edit($id)
{
$tasks = Task::findOrFail($id);
$this->authorize('edit', $tasks);
return view('tasks.edit', compact('tasks'));
}
我认为代码很好,因为我已多次修改,但正如我之前所说,我总是收到消息此操作未经授权,但任务是编辑用户。< / p>
http://i.imgur.com/2q6WFb3.jpg
我做错了什么?我可以正确使用该政策吗?
答案 0 :(得分:0)
你正在使用“===”这意味着双方数据和数据类型都匹配。可能你的数据是匹配的,而不是数据类型,你可以尝试使用“==”
public function edit(Student $student, Task $tasks)
{
return $student->id == $tasks->student_id;
}