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函数在视图中调用策略(会自动隐藏删除按钮,如果不是管理员则不显示删除按钮)

  • 相关阅读:
    uva 10561 sg定理
    二进制下 求分数化小数的循环节问题
    zoj 2562 反素数
    uva 11916 解模方程a^x=b (mod n)
    Android 组件化方案探索与思考
    2018谷歌I/O开发者大会8大看点汇总 新品有哪些
    Glide高级详解—缓存与解码复用
    Android性能优化:手把手带你全面实现内存优化
    Android几种强大的下拉刷新库
    Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
  • 原文地址:https://www.cnblogs.com/yaoliuyang/p/13015064.html
Copyright © 2011-2022 走看看