【问题标题】:Laravel 5 - AuthorizationLaravel 5 - 授权
【发布时间】:2015-07-29 14:23:27
【问题描述】:

我有一个 Laravel 5 应用程序,需要使用中间件实现授权。我已使用“委托”(https://github.com/Zizaco/entrust)进行授权。

我的问题是,我如何在我的中间件的句柄方法中授权每个请求(用户/索引、用户/创建、用户/存储等)。

我可以检查 Auth::user()->can('create-user') 但需要动态检查每个请求。

【问题讨论】:

    标签: authorization laravel-5 middleware


    【解决方案1】:

    这是我对此类中间件的实现:

    class Authenticate {
    
        public function __construct() {}
    
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $token = \Request::header('x-auth-token');
    
            // common login functionality
            if ($token) {
                $authtoken = \App\Models\Authtoken::find($token);
                if ($authtoken) {
                    \Auth::loginUsingId($authtoken->user_id);
                }
            }
    
            return $next($request);
        }
    }
    

    Authtoken 是 authtokens 表的一个雄辩的模型。当然,您可以通过其他方式检索用户 ID。

    【讨论】:

    • 感谢您的回复,但我真正想要的是检查用户是否可以执行给定的任务(can-update-user)。我已按用户角色将权限存储在表中。使用“委托”我可以检查 Auth::user()->can('update-user')。但是我如何动态识别每个请求并检查权限。
    • 和我提供的代码类似。您需要从请求中获取当前路线并检查您需要的任何内容。如果用户没有足够的权限,您将返回一些带有错误的 json 而不是 return $next($request)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2016-02-10
    相关资源
    最近更新 更多