当前用户没有修改自己信息的权限?
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);后才发生的
关于 LearnKu
高认可度评论:
遇到相同的问题,但是不同的原因,最终解决办法跟坑主是一致的。
教程中自动注册授权策略的代码,应该是没有解决"自动授权默认会假设 Model 模型文件直接存放在 app 目录下,鉴于我们已将模型存放目录修改为 app/Models"问题的,改成坑主的手动注册就ok了。
有,你仔细对比下自己的代码跟教程的代码
大小写注意下。 应该是
User核对下你写的和教程中的代码。
@heart 问题不在那,我写错文件了应该写在AuthServiceProvider.php里,我写在了AppServiceProvider.php,尴尬的要死
遇到相同的问题,但是不同的原因,最终解决办法跟坑主是一致的。
教程中自动注册授权策略的代码,应该是没有解决"自动授权默认会假设 Model 模型文件直接存放在 app 目录下,鉴于我们已将模型存放目录修改为 app/Models"问题的,改成坑主的手动注册就ok了。