如何将会话变量引入到此Laravel 8应用程序的AuthServiceProvider中?
问题描述
我正在开发一个具有用户、角色和权限的Laravel 8应用程序。我使用Microsoft Azure进行用户注册和登录。我首先关注了他们网站上的this tutorial。
我在routesweb.php
中使用了一个自定义中间件来区分经过身份验证的用户和来宾:
我从permissions
MySQL表中获得了特定于每个用户角色的逗号分隔的用户权限列表。
我将userPermissions
变量存储在如下所示的会话中:
这使我可以在视图(navbar.blade.php
部分)中直接从会话输出当前(已登录)用户的权限列表,如下所示:
目标
我的意图(创建session('userPermissions')
的目的)是使用该用户在盖茨中的权限。为此,在appProvidersAuthServiceProvider.php
中,我有:
在基本控制器(appHttpControllersController.php
)中,我使用use IlluminateSupportFacadesGate
导入了Gate Facade,然后在users.blade.php
问题
evan如果当前用户确实具有view-user权限(在导航栏中可见),则USERS表不存在,在AuthServiceProvider.php
中执行dd(session('userPermissions'))
将返回null
。
我的错误在哪里?
推荐答案
假定您已在AppProvidersAuthServiceProvider
中注册了Policy
&;Gate
。
CLI命令:
然后在class UserPolicy
中,您必须实现方法index()
。
用户甚至可以在呈现任何刀片模板之前签入控制器。
对于您的用例...请参阅以下示例:Methods Without Models或Guest Users。
当Gate
知道User $user
时,依赖session()
是没有意义的
这篇关于如何将会话变量引入到此Laravel 8应用程序的AuthServiceProvider中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!