我有一个问题,我不能在laravel 5.2中使用策略.
我有2张桌子,学生和任务.
我尝试应用策略来阻止通过更改URL来编辑任务,但我总是收到消息此操作未经授权,尽管任务是正确的用户.
政策代码:
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中的代码
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'));
}
我认为代码很好,因为我已多次修改,但正如我之前所说,我总是收到消息此操作未经授权,但任务是编辑用户.
我究竟做错了什么?我可以正确使用该政策吗?