如何配置 Horizon 访问权限,无权限自动跳到登录页?

文档写的很简单,望大神给个示例代码

黄威
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

看了一下Horizon的源码,他的中间件里面,如果不满足条件就直接abort(403)了,所以按我说的那种确实也会进入Horizon

public function handle($request, $next)
{
    return Horizon::check($request) ? $next($request) : abort(403);
}

所以可以在auth方法里面手动抛出AuthenticationException,这样就可以跳转到登录界面了

Horizon::auth(function ($request) {
    throw new AuthenticationException();
});
5年前 评论
讨论数量: 11

文档写的简单,但是够用了啊

Horizon::auth(function ($request) {
    // 在这里你可以根据需求自己判断啊
    // 比如判断用户类型
    if($request->user()->isAdmin()){
        return true;
    }
    // 或者
    if(Auth::user()->isAdmin()){
        return true;
    }
    // 或者
    if(Auth::user()->email === 'xxxxx@xxx.xxx'){
        return true;
    }

    return false;
});
5年前 评论
黄威

@FMW 没有权限 如何跳到登录页

5年前 评论

@hihuangwei return redirect(route('login'));就好了啊

5年前 评论
黄威

@FMW 这样不行。这样就不需要认证了

5年前 评论

@hihuangwei 什么鬼????

5年前 评论
黄威

@FMW 这样就直接进入Horizon,必须要有 return false 才可阻止进入

5年前 评论

@hihuangwei 那是你已经登录了吧

5年前 评论
黄威

@FMW 没有登录

5年前 评论

看了一下Horizon的源码,他的中间件里面,如果不满足条件就直接abort(403)了,所以按我说的那种确实也会进入Horizon

public function handle($request, $next)
{
    return Horizon::check($request) ? $next($request) : abort(403);
}

所以可以在auth方法里面手动抛出AuthenticationException,这样就可以跳转到登录界面了

Horizon::auth(function ($request) {
    throw new AuthenticationException();
});
5年前 评论
黄威

@FMW 厉害,谢谢

5年前 评论
hookover

没搞明白它是怎么显示的
我两个项目,其中一个可以正常,另一个403
直接改源码不太好吧

5年前 评论

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