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
下生成Policies\UserPolicy.php
目录