码迷,mamicode.com
首页 > 其他好文 > 详细

Laravel 权限管理总结(一)

时间:2018-02-03 15:47:49      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:迁移   com   turn   策略   title   login   外键   art   生成   

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 权限管理总结(一)

标签:迁移   com   turn   策略   title   login   外键   art   生成   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!