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. js 事件监听 冒泡事件

    js 事件监听  冒泡事件   的取消 [自己写框架时,才有可能用到] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ...

  2. 利用JS提交表单的几种方法和验证

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 <script type="text/javascript"> function ...

  3. WAP网页输入框的默认键盘类型控制

    最近有用户反映手机网的输入框不够人性化,比如手机号.卡号输入框应该默认显示数字键盘,邮箱输入框应该默认显示邮箱键盘. 百度上对这样的资料介绍很多,基本上都和这个页面是一个意思 http://www.w ...

  4. java写入文件的几种方法分享

    转自:http://www.jb51.net/article/47062.htm 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所 ...

  5. WCF的创建及其服务配置

    1 开发环境VS2010,我们可以通过,“WCF服务库”.“WCF服务应用程序”,这里说“WCF服务应用程序”的方式. 2 如下 ① ② 先把项目中的"IService1.cs", ...

  6. vs2010如何生成EXE文件如何更改EXE程序图标

    vs2010如何生成EXE文件 F5启动调试后,进入下面路径查找: 我的文档\Visual Studio 2010\Projects\项目名称\项目名称\bin\Debug 如何更改EXE程序图标 其 ...

  7. CodeForces 505B Mr. Kitayuta's Colorful Graph

    Mr. Kitayuta's Colorful Graph Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

  8. 向数据库中添加内容 manageStdInfo.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="manageStdInfo.as ...

  9. SU Demos-04Deconvolution-02Wiener_Levinson

    本Demo共有4个脚本,我只看了第一个,后面的3个不熟悉,就不往这里贴图了,望谅解. 不足之处,欢迎批评指正. 先看readme 生成数据所需的c程序 make上述c程序时需要的makefile(本人 ...

  10. js:语言精髓笔记12--动态语言特性(2)

    对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console. ...