php - 使用模型对象的 Laravel 访问控制

标签 php laravel laravel-4

我需要根据登录的用户限制对应用程序某些部分的访问。我的意思是让用户在博客应用程序上仅编辑自己的帖子。

如果用户不是所需帖子的所有者,是否有比 Controller 的每个功能更好的方法,重定向到某个错误页面?

例如,如果我的路线是/post/{post_id}/edit/post/{post_id}/preview/post/{post_id}/delete,我能否以某种方式在 PostController 中声明一个通用函数,例如:

if(Post::find($post_id)->user_id != Auth::user()->id){
    return View::make('access-error');
}

谢谢!

最佳答案

在你的 Controller 中你可以做这样的事情:

public $check = ['edit', 'preview', 'delete'];

public function callAction($method, $parameters) {
    if(in_array($method, $this->check, true) && 
    $post_id = $parameters['post_id'] &&
    Post::find($post_id)->user_id != Auth::user()->id) {
        return View::make('access-error');
    }

    return parent::callAction($method, $parameters);
}

关于php - 使用模型对象的 Laravel 访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246280/

相关文章:

php - Laravel 4如何将表单数据提交到不同的表

php - mySQL更新用户信息保存null

javascript - 使用 Ajax 将 PHP 嵌入到 javascript 中,以便将 MySQL 数据存储在 javascript 对象中

php - 如何为多个输入字段设置单个自定义验证消息?

php - Blade 有调试控制台吗?

Laravel 框架大小

php - 是否可以覆盖默认的 PHP 函数?

php - 带有版本号的文件名...这是个好主意吗?

javascript - 无法使用jquery交换复选框上按钮的属性

php - Laravel 阻止用户编辑/查看其他用户的资源