首页 > 其他 > 详细

Laravel 权限管理总结(一)

时间:2018-02-03 15:23:28      阅读:220      评论:0      收藏:0      [点我收藏+]

1. 第一步 建立迁移文件

Post 表

id

user_id  

title

body

外键   $table->foreign(‘user_id‘)->references(‘id‘)->(‘users‘)->onDelete(‘cascade‘)

然后执行迁移

2.第二步模型工厂生成测试数据

$factory->define(App\Models\Post::class, function (Faker\Generator $faker) {

return [
‘user_id‘ => factary(\App\User::class)->create()->id,
‘title‘ => $faker->sentence,
‘body‘ => $faker->paragraph,
];
});
通过seeder 或者 tinker 生成数据

3.ACL权限实现

定义Posts资源路由并定义该Controllers

App\Providers\AuthServiceProvider

boot 方法中

Gate::define(‘show-post‘, function ($user, $post) {
        return $user->id == $post->user_id;
    });

代码优化
return $user->owns(‘$post‘);
User模型中 定义 owns  return $user->id == $post->user_id;

show方法中

public function show($id){
$post = Post::findorFail($id);

\Auth::loginUsingId(1);

//或者$this->authorize(‘show-post‘,$post)

if(Gate::denies(‘show-post‘,$post)){
abort(403,‘sorry‘);
}

return $post->title; //5.1的新特性 return view(‘posts.show‘,compact(‘post‘));
}

show 的视图文件

<p1 > {{ $post ->title}} </p1>

现在只有有权限的用户 才可以看到 编辑的a标签
@can(‘show-post‘,$post)
<a href="#"> 编辑文章</a>
@endcan


4.Policy权限规则实现
php artisan make:policy PostPolicy 

Policy中

public function update(User $user,Post $post)
{

return $
user->owns($post);
}
AuthServiceProvider 中注册该策略

使用它
public function show($id){
$post = Post::findorFail($id);

\Auth::loginUsingId(1);

//或者$this->authorize(‘show-post‘,$post)

if(Gate::denies(‘update‘,$post)){
abort(403,‘sorry‘);
}

return view(‘posts.show‘,compact(‘post‘));
}
show 的视图文件 

<p1 > {{ $post ->title}} </p1>

现在只有有权限的用户 才可以看到 编辑的a标签
@can(‘update‘,$post)
<a href="#"> 编辑文章</a>
@endcan






























 

Laravel 权限管理总结(一)

原文:https://www.cnblogs.com/gorgeous/p/8404831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!