laravel authorize(授权)

1.方法一

namespace App\Providers;
...
class AuthServiceProvider extends ServiceProvider
{
...

    public function boot(GateContract $gate)
    {
        parent::registerPolicies($gate);
        //定义授权能力
        $gate->define(‘update-post‘, function($user, $post){
            return $user->id == $post->user_id;
        });
    }
}
namespace App\Http\Controllers;
...
//在控制器中检验授权
class PostController extends Controller
{
    public function show($id)
    {
        //auth()->logout();
        auth()->loginUsingId(3);
        $post = Post::findOrFail($id);
        // if(Gate::denies(‘show-post‘, $post)){
        //     abort(403, ‘sorry, not sorry!‘);
        // }
        //$this->authorize(‘update-post‘, $post);
        return view(‘posts.show‘, compact(‘post‘));
    }
}
//在view中检验授权,如果通过才显示update链接<h2>{{$post->title}}</h2>
@can(‘update-post‘, $post)
<a href=#>update</a>
@endcan

2.方法二

建立policy

php artisan make:policy PostPolicy

注册

namespace App\Providers;
...
class AuthServiceProvider extends ServiceProvider
{

    protected $policies = [
        // ‘App\Model‘ => ‘App\Policies\ModelPolicy‘,
        \App\Post::class => \App\Policies\PostPolicy::class,
    ];

定义类策略函数

namespace App\Policies;

use App\User;
use App\Post;

class PostPolicy
{   //可以建立多个检验方法对应不同场景
    public function update(User $user, Post $post)
    {
        return $user->id == $post->user_id;
    }
}

使用方法同上。

时间: 2024-10-06 18:04:41

laravel authorize(授权)的相关文章

[一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 OnActionExecuting内如何获取参数

如何获取参数:http://www.cnblogs.com/anytao/archive/2009/04/23/anytao-mvc-02-actionauthorize.html 由问题引出 在ASP .NET MVC中,以友好的URL访问资源是MVC吸引眼球的特色之一,但是随之而来对于Authorize问题的处理变得令人令人头痛.例如假设我们有一个获取Book信息的Action,定义在BookController中: public class BookController : Control

1邮件 2队列 3redis 4cache 5基础控制器 6定时任务 7policy

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px;

MVC过滤器详解

APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常).如下表, 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法 Exce

Unity API - C

废话不多说,一针见血,go! 一起来看 API Caching 缓存 Camera 摄像机 CapsuleCollider 胶囊碰撞器 CharacterController 角色控制器 CharacterJoint 角色关节 Cloth 布料 ClothRenderer 布料渲染器 ClothSkinningCoefficient 布料蒙皮系数 Collider 碰撞器 Collision 碰撞 Color 颜色 CombineInstance 合并实例 Caching 缓存 Caching.

MVC5的AuthorizeAttribute详解

现今大多数的网站尤其是购物网站都要求你登录后才能继续操作,当你匿名的将商品放入购物车后,不可能匿名购买这时可以转到登录界面让用户进行登录验证. 适用系统自带的过滤器 MVC5只要将属性[Authorize]置于相关的action之前就行,那么在调用Buy action之前,就会运用Authorize过滤器. 1 [Authorize] 2 public ActionResult Buy(int id) 3 { 4 //其它购买逻辑代码放在这里 5 6 } 2. 也可以将属性[Authorize]

越狱Season 1-Episode 11: And Then There Were 7-M

Season 1, Episode 11: And Then There Were 7-M -Michael: That one 那个 -businessman: Nice choice choice: 选择 眼光不错 -Michael: Thanks. 谢谢 -businessman: Platinum platinum: 白金 白金 Brushed. brushed: 拉过绒的 拉丝的 -Michael: Six point two five point: 点 6.25克? -busines

【转载】ASP.NET MVC的过滤器

APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常).如下表, 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法 Exce

shiro整合oauth

一.基本思路脑图 二.客户端shiro配置 shiro配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http

中文Appium API 文档

该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/slate/cn/master/?ruby#about-appium 中文Appium API 文档 第一章:关于appium1.1 appium客户端客户端类库列表及Appium服务端支持 这些类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON 格式selenium命令以及额外的