关于权限控制方式的思考?

文档中使用的是编写授权策略来进行权限的验证,可以看到验证不通过的时候会返回一个报错的页面,这样的话感觉页面对于用户来说不是那么友好。我觉得是否可以使用中间件来进行权限的验证,这样可以在验证不通过的时候进行页面的较为友好的导航呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

可以通过捕捉异常,让页面进行跳转~

6年前 评论
讨论数量: 17

在授权操作的时候,如果不是当前登录的用户操作其他用户的时候,我们可以在验证不通过然后从定向登录页面或是你自己预设的页面就行,这样就行,不过我还没有找到在哪里改代码。

6年前 评论

使用中间件来控制很容易啊,我觉得可能教程是需要讲解授权策略的使用,个人觉得使用中间件来控制权限不符合情况下页面跳转会更友好一些而已。

6年前 评论

可以通过捕捉异常,让页面进行跳转~

6年前 评论

@wfl36 异常捕获是一个不错的想法,另外今天看 Laravel 文档的时候发现其实如果想通过授权策略来控制页面的跳转也是可以的,文档在这里,写法如下:

if ($user->cant('update', $post)) {
    //页面跳转逻辑
}
6年前 评论

@wfl36 我通过catch异常,进行跳转,可是并没有跳转,还是那个异常界面

try{
        $this->authorize('update',$user);
}catch (AccessDeniedHttpException $e) {
        redirect()->route('login');
}
6年前 评论

@PENGPN
try {
$this->authorize('update', $user);
} catch (AuthorizationException $e) {
return redirect()->route('users.show',$user->id);
}

6年前 评论

@wfl36 不行额 还是还是那个异常界面~~~~

6年前 评论

@Yang 不行,catch不到,还是那个异常界面

6年前 评论

@Yang @wfl36 搞定了,原来我写错方法了。哈哈。不好意思。谢谢两位

6年前 评论

@PENGPN @wfl36 两位大哥这么写不行啊
try {
$this->authorize('update', $user);
} catch (AuthorizationException $e) {
return redirect()->route('users.show',$user->id);
}

5年前 评论

@Yang 你这个方法是不行的 使用$user->can 是恒成立的相当于在授权策略里面一直在判断$user->id === $user->id 只能是Auth::user()->can()

file

5年前 评论

try catch 获取异常信息没有试出来 还望解答。

5年前 评论

@Asa_ccan()方法的第二个参数传$user干嘛?

5年前 评论

@Yang 我的理解是 假如你当前用户是1 去编辑用户2 的个人信息 这里这个$user 是 用户2的个人实例? 不知道这么理解是否妥当。

5年前 评论

@Yang 你觉得我的理解有误吗、 按我的思路 的话

5年前 评论

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