我觉得可能是你的理解有误,这个 update
方法并不能控制访问其他人的编辑页面,update
是在编辑页面进行提交的时候才会触发的,如果你想要控制用户不能进入其他人的编辑页,那就应该在 UserPolicy
增加一个控制访问权限的方法,默认的应该是 view
方法,在这个方法里面验证用户是否有权限访问,然后在控制器的 edit
方法里面调用 $this->authorize('view',$user)
,这样用户就没有权限访问其他人的编辑页面。
至于你说的 IDE 报错是因为 authorize
方法会抛出 UnauthorizedException
的异常,你没有去捕获和处理这个异常,所以编辑器提示了。因为框架有全局的错误处理,所以这个忽略就好,如果你觉得看着不舒服,可以在加个 Doc,告诉编辑器 update 方法会抛出这个异常就可以了。
还有楼上说的 auth middleware
和这个问题没有关系,auth
是用来用户认证的,和授权没有关系
我觉得可能是你的理解有误,这个 update
方法并不能控制访问其他人的编辑页面,update
是在编辑页面进行提交的时候才会触发的,如果你想要控制用户不能进入其他人的编辑页,那就应该在 UserPolicy
增加一个控制访问权限的方法,默认的应该是 view
方法,在这个方法里面验证用户是否有权限访问,然后在控制器的 edit
方法里面调用 $this->authorize('view',$user)
,这样用户就没有权限访问其他人的编辑页面。
至于你说的 IDE 报错是因为 authorize
方法会抛出 UnauthorizedException
的异常,你没有去捕获和处理这个异常,所以编辑器提示了。因为框架有全局的错误处理,所以这个忽略就好,如果你觉得看着不舒服,可以在加个 Doc,告诉编辑器 update 方法会抛出这个异常就可以了。
还有楼上说的 auth middleware
和这个问题没有关系,auth
是用来用户认证的,和授权没有关系
你需要在 UsersController.php
中使用添加
public function __construct()
{
$this->middleware('auth',[
'expect' => ['show','create','store']
]);
}
来在初始化 UsersController
这个类的时候进行授权
我觉得可能是你的理解有误,这个 update
方法并不能控制访问其他人的编辑页面,update
是在编辑页面进行提交的时候才会触发的,如果你想要控制用户不能进入其他人的编辑页,那就应该在 UserPolicy
增加一个控制访问权限的方法,默认的应该是 view
方法,在这个方法里面验证用户是否有权限访问,然后在控制器的 edit
方法里面调用 $this->authorize('view',$user)
,这样用户就没有权限访问其他人的编辑页面。
至于你说的 IDE 报错是因为 authorize
方法会抛出 UnauthorizedException
的异常,你没有去捕获和处理这个异常,所以编辑器提示了。因为框架有全局的错误处理,所以这个忽略就好,如果你觉得看着不舒服,可以在加个 Doc,告诉编辑器 update 方法会抛出这个异常就可以了。
还有楼上说的 auth middleware
和这个问题没有关系,auth
是用来用户认证的,和授权没有关系
推荐文章: