问题标签 [service-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
devise - Shibboleth SP 聚类
我们支持多租户应用程序。大多数时候,我们的应用程序负载很大。我们的技术堆栈包括:
- 导轨 3.2.13
- 红宝石 1.9.3
在 Apache/2.2.15 (Unix) 和 Passenger(3.0.11) 上运行。
相关宝石:设计(2.2.7)oauth(0.4.7)oauth2(0.8.1)omniauth(1.1.4)omniauth-oauth(1.0.1)omniauth-oauth2(1.0.3)omniauth-shibboleth(1.0.8) )
我们已将 shibboleth2 配置为使用 StorageService type="Memory"。我们有 2-3 个应用服务器在任何时间点运行。很晚,我们的许多客户抱怨他们无法通过 Shibboleth SSO 登录。在调试时,我们观察到,该问题在 Mac OS 上的 Chrome 浏览器上出现的频率更高。在浏览器网络窗口中,我们看到用户没有被视为已登录,即使在 IDP 成功验证后也是如此。如果用户单击“登录”链接(重定向到 /users/auth/shibboleth),系统会将用户视为已登录。这对我们的客户来说非常混乱。你能帮助我们了解问题可能出在哪里吗?是omniauth-shibboleth、设计还是浏览器cookie 的不稳定行为?我们无法得出结论。
此外,您是否建议移动 StorageService type="ODBC" 而不是 Memory,因为应用程序服务器(因此 SP)处于自动缩放模式?如果是,我需要一些文档/教程来配置 ODBC StorageService。当我试一试时,回调 URL 根本没有启动 - 我仍然想知道为什么omniauth_controller 的回调提供程序方法根本没有被调用。
php - Cookie 和 Session 变量在 ServiceProvider 中部分工作
这是我之前的问题的一个分支。到目前为止,我的问题是以未散列的形式获取 Cookie 变量 - 请参见下面的第 6 点。
我无法设置主题。至于现在,我已经通过反复试验确定在我的 ServiceProvider 内部我不能使用 cookie 或会话变量。
我的 ServiceProvider 的内容如下所示:
App/Providers/themeSelectServiceProvider.php
我已经在我的config/app.php文件中注册了服务提供者:
情况是:
我可以在我应用程序的任何位置的任何视图中打印 Session::get('themeName') 。
我也可以打印 Cookie - 在视图中可以看到
线
否则 {\Theme::set('Fawkes');}
更改主题 - 但我需要手动编辑值(主题名称)以在它们之间切换。if 条件中的命令永远不会起作用。
当我尝试使用此行设置会话值时
会话::put('theme', $theme);
什么都没发生。但是
在 ServiceProvider 中声明后,可以在视图中看到。
- 当我使用命名空间声明时,我得到了错误。这意味着解析了 ServiceProvider 内容。
请帮我解决问题!
编辑:
正如@igaster 所说,Session 对我不起作用。伤心。
尽管如此,igaster/themes readme.md 中提到的 Cookie 解决方案也不起作用。我做了这个测试:
在任何 VIEW 文件中,此代码
请求::cookie('themeName');
产生 cookie 的预期值(“Seldon”)
当我在 ServiceProvider 中执行以下代码时
然后在视图中打印会话变量,我得到这样的东西:
eyJpdiI6IjU0eUF6Y3YwaGdmSEhaTVplS3hyQ1E9PSI4InZhbHVl5oiMWhQY2hYRjZ6YzBmUjRDSjc5amNXUT09IiwibWFjIjoiMTEyYTENTc0MjM2ZmE5YzA5OWYwYWE5MjE3OTNhYjZkMTU5NmVmZDcwY
似乎 Cookie 没有经过哈希处理。
谁能告诉我该怎么做才能获得编码值?
此外,在 ServiceProvider 中,我无法从数据库中获取主题值 通常对于已登录的用户,我会这样做:
/li>
但在这里我得到空白屏幕。当我使用这样的条件代码时也是如此:
local.ERROR:异常 'Symfony\Component\Debug\Exception\FatalErrorException' 带有消息 'Uncaught exception 'ErrorException' 和消息 'Undefined property: Symfony\Component\Debug\ExceptionHandler::$charset' in D:\www!NiePozwalam\供应商\symfony\debug\Symfony\Component\Debug\ExceptionHandler.php:199
laravel - 未找到自定义服务提供商
我尝试为我的项目实现自定义服务提供者和外观:
1. 为要包含的类和外观创建文件夹 /app/Helpers/GeoLocation.php /app/Facades/GeoLocation.php
2. 创建类需要提供:Helpers/Geolocation.php
3. GeoLocation 的 Facade 的创建:Facades/Geolocation.php
4.添加GeoLocationServiceProvider:/Providers/GeoLocationServiceProvider.php
5.向app.php添加信息
6.添加别名
之后我执行composer dump-autoload
并使用了新的服务提供者:
路由.php
但它返回以下错误:
我不知道我错过了什么。是关于文件夹吗?
php - Laravel 绑定对象接口与在其构造函数中具有变量参数的实现
请注意,在提出这个问题之前,我已经调查过:
和
Laravel 4:对如何使用 App::make() 感到困惑
但我看不到他们回答了我的问题!
域模型:一个站点必须有一个所有者,目前这个所有者是客户类型,但将来可以更改为经销商或员工等。所以我使用多态性如下:
类站点有一个所有者属性。Owner 是一个接口,Customer 是一个实现 Owner 的类,Customer 有一个 Name 和一个 Uid,因此这些在 Customer 的构造函数中是必需的。
现在我想将 Customer 实现绑定到 Owner 接口,这样每当我调用 Owner 时,我都会得到一个客户。
我们通常会这样做:
但是 Customer() 需要初始化 $id 和 $name 并且这些是变量对象 - 不是静态的,所以我不知道如何传递它们?
我试过这个:
但在这种情况下,USE 语句中的 $name 和 $id 没有定义。有人有想法吗?
更新:客户构造函数如下:
这将从聚合根(站点)初始化。正确的类型将传递给它。
php - Laravel 5 从包服务提供者注册中间件
我目前正在为 Laravel 5 开发一个包。
我的包包含一个自定义中间件,我想$routeMiddleware
从我的包 Service Provider 中将它添加到 Kernel 类的数组中。
但我似乎无法找到一种方法来做到这一点。
我试图创建一个扩展内核类的自定义类,然后我可以将数组与我的数组合并。
但是一旦退出构造函数,这是不可能的。
在 L4 中,您有 App::middleware,但该功能在 L5 中不再可用。
解决了这个问题的任何人都可以帮我解决这个问题吗?
请告诉我我的问题是否不够清楚,以便我澄清一下。
php - Laravel 如何延迟多个绑定都列在一个服务提供者中?
我希望我的所有存储库都列在一个服务提供商中,但我不希望它们一次全部加载...
考虑以下服务提供商:
根据 Laravel 文档,我可以将绑定的注册推迟到需要时。但是,当我在单个服务提供者中添加多个绑定时,这是否有效?具体来说,我的意思是,它会延迟然后加载全部还是只加载需要的那个?
php - Laravel 5 解决 ServiceProvider 中的依赖关系
我有一个类似于存储(添加/获取项目)的类。我尝试将它绑定为一个服务提供者中的单例,并在另一个服务提供者的引导方法中解决它。
为简单起见,代码已更改。
app/Providers/BindingProvider.php
app/Providers/ResolvingProvider.php
app/Http/Controllers/WelcomeController.php
当我尝试调试 MyBinding 状态时,我WelcomeController
得到了空项目数组。但是,如果我$manual
从我的 ResolvingProvider 中取消注释部分,它会返回一个包含 'foo' => 'bar' 的数组。这是否意味着 IoC 分辨率在ServiceProvider::boot()
方法上被破坏了,还是我在滥用 Laravel 功能?
Laravel 版本:5.0.28
更新:从 WelcomeController 添加了代码示例。
java - 向服务提供者公开 Java 服务提供者接口
我正在尝试为插件/应用程序创建一个框架,我想我已经决定在 Java 中使用服务提供者接口 (SPI) 来实现这一目标。最终的愿景是人们可以下载插件(如应用商店),然后只需将 jar 放入文件夹中,他们就可以使用现有程序。
所以我有一个课程PluginInterface
将成为我的 SPI。我希望所有插件都实现这个类(它有基本的方法,如doesAccept
,handle
等)。由于第 3 方将创建服务提供者,我怎样才能让他们在他们的代码中引用这个 Java 接口(以便他们可以实现它),而不实际给他们主应用程序的源代码?
php - laravel 5 配置服务提供者仅用于本地
我刚刚阅读了基于您的环境的 Laravel 5 配置文档http://laravel.com/docs/5.0/configuration#environment-configuration
我了解如何使用 .env 文件来配置一些变量,但是如何配置基于环境加载的服务提供商?
例如,在我的“本地”环境中,我使用这个调试栏插件,它需要一个服务提供者,但我不想在 config/app.php 中为生产定义它。
在 Laravel 4.2 中,我可以只创建 config/local/app.php 但这似乎不再起作用,还有什么替代方法?
security - 在应用程序级别检查 shibboleth SP 会话
这个问题可能听起来很奇怪,但我有一个最坏的情况。
我的应用程序服务器在http://10.10.10.10/app上(说出来app-server
),http-apache 服务器在http://some.dns.com/app上(说出来http-server
)。两者都是不同的系统服务器。
我知道app-server
不应该直接公开访问,但让我们假设它是公开访问的。现在Shibboleth
安装在http-server
安全路径http://some.dns.com/app/secure上。而一个 servlet 被映射为从 path 获取属性/secure
。
如果有人设法创建假的 http-apache-server (比如fake-http-server
),那也指向app-server
. 所以这里fake-http-server
可以直接访问/secure
路径,并且该服务器可以手动发送类似shibboleth的属性,并且可以在没有保护的情况下登录系统。
我的问题是,Shibboleth 中是否有一种机制,我可以在我的应用程序中检查 shibboleth 会话 - 不仅在 http 层中。