当前用户没有修改自己信息的权限?

UserPolicy.php

class UserPolicy
{
    use HandlesAuthorization;

//    /**
//     * Create a new policy instance.
//     *
//     * @return void
//     */
//    public function __construct()
//    {
//        //
//    }

    public function update(User $currentUser, User $user)
    {
        return $currentUser->id === $user->id;
    }
}

AuthServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
//    /**
//     * Bootstrap any application services.
//     *
//     * @return void
//     */
//    public function boot()
//    {
//        //
//    }
//
//    /**
//     * Register any application services.
//     *
//     * @return void
//     */
//    public function register()
//    {
//        //
//    }

    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies=[
        'App\Model' => 'App\Policies\ModelPolicy',
        \App\Models\User::class => \App\Policies\UserPolicy::class,
    ];
}

UsersController.php

public function edit(User $user)
    {
        $this->authorize('update', $user);
        return view('users.edit',compact('user'));
    }

    public function update(user $user, Request $request)
    {

        $this->validate($request,[
            'name'=>'required|unique:users|max:50',
            'password'=>'nullable|confirmed|min:6'

        ]);

        $this->authorize('update', $user);

        $data=[];
        $data['name']=$request->name;
        if ($request->password){
            $data['password']=bcrypt($request->password);
        }

        $user->update($data);
        session()->flash('success','更新成功');
        return redirect()->route('users.show', $user->id);
    }

问题是在edit()和update()加上$this->authorize('update', $user);后才发生的

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

遇到相同的问题,但是不同的原因,最终解决办法跟坑主是一致的。
教程中自动注册授权策略的代码,应该是没有解决"自动授权默认会假设 Model 模型文件直接存放在 app 目录下,鉴于我们已将模型存放目录修改为 app/Models"问题的,改成坑主的手动注册就ok了。

file

4年前 评论

遇到相同的问题,但是不同的原因,最终解决办法跟坑主是一致的。
教程中自动注册授权策略的代码,应该是没有解决"自动授权默认会假设 Model 模型文件直接存放在 app 目录下,鉴于我们已将模型存放目录修改为 app/Models"问题的,改成坑主的手动注册就ok了。

file

4年前 评论

@heart 问题不在那,我写错文件了应该写在AuthServiceProvider.php里,我写在了AppServiceProvider.php,尴尬的要死

5年前 评论

有,你仔细对比下自己的代码跟教程的代码

5年前 评论
    public function update(user $user, Request $request)

大小写注意下。 应该是 User
核对下你写的和教程中的代码。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!