zoukankan      html  css  js  c++  java
  • laravel-策略模型用法详解

    1.简介(使用场景)

    如果你有一个博客的后台项目
    有一个需求,管理员可以随意的删除任何用户,修改任何用户
    普通用户没有删除权限这个时候就可以使用laravel的策略
    判断当前用户是否是管理员,如果是的话执行除却自己以外的所有删除操作
    否则就不能删除,或者修改信息

    2.sql表(ddl)

    is_admin就是判断用户是否是管理员的字段默认为0

    CREATE TABLE `users` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
      `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
      `email_verified_at` timestamp NULL DEFAULT NULL,
      `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
      `is_admin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是管理员',
      `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `created_at` timestamp NULL DEFAULT NULL,
      `updated_at` timestamp NULL DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `users_email_unique` (`email`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
    

    3.用法

    3.1视图中的调用

    由于写的是资源路由所以使用的时候是delete方法
    执行删除,只好用form表单伪造请求
    传递的参数(当前的用户:全部信息)

    3.2生成策略(对应User模型)

    php artisan make:policy UserPolicy --model=User

    此命令会在App下生成PoliciesUserPolicy.php目录

    3.3然后在appProvidersAuthServiceProvider.php注册策略

    3.3控制器中调用

    3.4使用@can函数在视图中调用策略(会自动隐藏删除按钮,如果不是管理员则不显示删除按钮)

  • 相关阅读:
    【读书笔记】MSDN 上关于加密解密的一个例子
    【读书笔记】创建泛型编程类 由链表而深入
    HDFS数据加密空间Encryption zone
    各种数据库的连接方法
    Java基础5
    Java基础4
    Java基础2
    博客优化、收录、RSS技巧
    Java基础3
    Java基础8
  • 原文地址:https://www.cnblogs.com/yaoliuyang/p/13015064.html
Copyright © 2011-2022 走看看