zoukankan      html  css  js  c++  java
  • laravel 授权、用户验证

    记录帖 

    一、授权

    只允许管理员删除用户,给管理员授权时,可以这样做,首先:

    创建UserPolicy类:

    php artisan make:policy UserPolicy 
    然后在UserPolicy中添加destroy方法
    app/policies/UserPolicy.php
    <?php
    namespace AppPolicies;
    use AppModelUser;
    use IlluminateAuthAccessHandlesAuthorization;
    class UserPolicy
    {
    use HandlesAuthorization;
     public function destroy(User $currentUser, User $user)
    //$currentUser 为当前登录的用户,$user为需要验证的用户
    {
    return $currentUser->is_admin && $currentUser->id !== $user->id;
    }
    }

     然后在AuthServiceProvider里添加:

    AppModelUser::class  => AppPoliciesUserPolicy::class,

    app/providers/AuthServiceProvider.php

    <?php
    namespace AppProviders;
    use IlluminateSupportFacadesGate;
    use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
    class AuthServiceProvider extends ServiceProvider
    {
    protected $policies = [
    'AppModel' => 'AppPoliciesModelPolicy',
    AppModelUser::class => AppPoliciesUserPolicy::class,
    ];
    } 
    最后,在控制器方法中调用即可:
    public function destroy(User $user)
    {
    $this->authorize('destroy', $user);
    $user->delete();
    session()->flash('success', '成功删除用户!');
    return back();
    }
    记录点滴,迭代精进,追求新生。Email: 942298768@qq.com
  • 相关阅读:
    Nginx是如何配置为 Web 服务器的【转载】
    BeanUtil工具类的使用
    数据库:XML,解析Dom4J
    jsp简单标签开发
    Java 反射 使用总结
    JAVA 对象序列化——Serializable
    使用Session防止表单重复提交
    EasyUi模糊匹配搜索框combobox
    Cookie工作原理
    COOKIE和SESSION有什么区别?
  • 原文地址:https://www.cnblogs.com/chaoyong/p/8818723.html
Copyright © 2011-2022 走看看