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

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);后才发生的

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4

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

file

4年前 评论

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

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

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

5年前 评论

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

5年前 评论

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

file

4年前 评论

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