1.方法一  直接在AuthServiceProvider 中定义闭包,比较灵活

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;
});
//使用类函数定义
    $gate->define('update-post', 'PostPolicy@update');
}
}
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;
}
}

使用方法同上。

laravel authorize(授权)的更多相关文章

  1. Laravel Gate 授权方式的使用指南

    参考链接:An Introduction to Laravel Authorization Gates 本文使用 Laravel 的 Gate 授权方式 实现一个基于用户角色的博客发布系统. 在系统包 ...

  2. laravel 创建授权策略

    用户只能编辑自己的资料 在完成对未登录用户的限制之后,接下来我们要限制的是已登录用户的操作,当 id 为 1 的用户去尝试更新 id 为 2 的用户信息时,我们应该返回一个 403 禁止访问的异常.在 ...

  3. MVC源码分析 - Authorize授权过滤器

    从 上一篇 其实能看到, 程序执行的过滤器, 有四种 : 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某 ...

  4. mvc - Authorize授权

    from : http://www.cnblogs.com/asks/p/4372783.html http://www.cnblogs.com/myindex/p/5479428.html

  5. SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端

    目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...

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

    如何获取参数:http://www.cnblogs.com/anytao/archive/2009/04/23/anytao-mvc-02-actionauthorize.html 由问题引出 在AS ...

  7. Spring Cloud2.0之Oauth2环境搭建(授权码模式和密码授权模式)

    oauth2 server 微服务授权中心,    github源码  https://github.com/spring-cloud/spring-cloud-security 对微服务接口做一些权 ...

  8. 微信授权就是这个原理,Spring Cloud OAuth2 授权码模式

    上一篇文章Spring Cloud OAuth2 实现单点登录介绍了使用 password 模式进行身份认证和单点登录.本篇介绍 Spring Cloud OAuth2 的另外一种授权模式-授权码模式 ...

  9. Spring Authorization Server授权服务器入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...

随机推荐

  1. [杂]DeadLock, Isolation Level, EntityFramework

    由于没有注意到EF事务的默认隔离级别是Serializable,(据说EF6.0以后默认隔离级别改成了Read_Commit_Snapshot)--这里有误,应该是加了TransactionScope ...

  2. GRE学习日志

    发现开博客园真的很有督促作用,今天也顺便开个GRE学习日志吧 2015-02-09:单词 2015-02-10:单词 2015-02-11:单词 2015-03-02:阅读 2015-03-04:阅读 ...

  3. TypeScript的崛起

    今天要讨论的话题是TypeScript.之前在微博上转载过一篇<The Rise of TypeScript?>的文章,今天来谈一下我的感想. 很多朋友应该都了解,TypeScript是微 ...

  4. /dev/tty /dev/ttyS0 /dev/tty0区别 (转载)

    1.串行端口终端(/dev/ttySn)     串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备.    计算机把每个串行端口都看作是一个字符设备.有段时间 ...

  5. HDU 4972 Bisharp and Charizard 想法题

    Bisharp and Charizard Time Limit: 1 Sec  Memory Limit: 256 MB Description Dragon is watching NBA. He ...

  6. android生成json

    package com.example.zzzz; import org.json.JSONArray; import org.json.JSONException; import org.json. ...

  7. helpDB

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  8. 掌上PDA无线下单 移动开单设备 手持POS终端打印扫描开单进销软件

    您公司是否存在以下问题吗? ◆ 接单员对价钱是否能记住?接单员是否知道库存? ◆ 接单员是否向客户推介优势产品或新产品? ◆ 接单员是否知道客户为什么有的产品再也没有给我们拿货? ◆ 退货时为什么会退 ...

  9. Redis String命令

        命令 解释 APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾. 如果 key 不存在, APPEND ...

  10. BZOJ3012 : [Usaco2012 Dec]First!

    建立Trie,那么成为答案的串必须满足其终止节点到根路径上没有其它点. 对于Trie上每个节点维护一个bitset,表示哪些字符必须在哪些字符之前. 每到达一个可能成为答案的终止节点,对图进行拓扑排序 ...