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. Java Hour 54 Spring Framework 1

    总之,Srping Framework 很好很强大. 1 Spring Framework 介绍 省下你和transcation APIs, JMX APIs, JMS APIs 交流的功夫. 1.1 ...

  2. Tomcat安装及配置

    用来进行web开发的工具有很多,Tomcat是其中一个开源的且免费的java Web服务器,是Apache软件基金会的项目.电脑上安装配置Tomcat的方法和java有些相同,不过首先需要配置好jav ...

  3. Mosquitto关于Connection lost的问题。

    文章发自:http://www.cnblogs.com/hark0623/p/4175048.html  转发请注明 如果当你的客户端订阅(sub)mqtt时,发现出现Connection lost ...

  4. SGU438 The Glorious Karlutka River =)(最大流)

    题目大概说有m个人要过一条宽W的河,人最远跳远距离是d,河上有n个垃圾堆,每个垃圾堆都有坐标和同一时间能容纳的人数,问所有人最少要跳几次才能跳到对岸. 又是一题根据时间拆点的最大流. 二分时间建容量网 ...

  5. HDU2296 Ring(AC自动机+DP)

    题目是给几个带有价值的单词.而一个字符串的价值是 各单词在它里面出现次数*单词价值 的和,问长度不超过n的最大价值的字符串是什么? 依然是入门的AC自动机+DP题..不一样的是这题要输出具体方案,加个 ...

  6. ! cocos2d sprintf的问题

    char dong[100]; sprintf(dong,"%s","dongshen"); CCLOG(dong); 以上正确 char dong[100]; ...

  7. unity 播放过场动画

    public var url="file:///c:/sample.ogg"; //文件路径 function Start () { //拼凑一个url url="fil ...

  8. CentOS6.4 配置Haproxy

    Haproxy下载地址:http://pan.baidu.com/share/link?shareid=1787182295&uk=1829018343 也可用wget http://hapr ...

  9. RowDataBound事件

    RowDataBound事件在创建gridView控件时,必须先为GridView的每一行创建一个GridViewRow对象,创建每一行时,将引发一个RowCreated事件:当行创建完毕,每一行Gr ...

  10. SQL server 表中如何创建索引?

    SQL server 表中如何创建索引?看个示例,你就会了 use master goif db_id(N'zhangxu')is not nulldrop database zhangxugocre ...