问题标签 [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.

0 投票
1 回答
381 浏览

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 的回调提供程序方法根本没有被调用。

0 投票
2 回答
1231 浏览

php - Cookie 和 Session 变量在 ServiceProvider 中部分工作

这是我之前的问题的一个分支。到目前为止,我的问题是以未散列的形式获取 Cookie 变量 - 请参见下面的第 6 点。

我无法设置主题。至于现在,我已经通过反复试验确定在我的 ServiceProvider 内部我不能使用 cookie 或会话变量。

我的 ServiceProvider 的内容如下所示:

App/Providers/themeSelectServiceProvider.php

我已经在我的config/app.php文件中注册了服务提供者:

情况是:

  1. 我可以在我应用程序的任何位置的任何视图中打印 Session::get('themeName') 。

  2. 我也可以打印 Cookie - 在视图中可以看到

  3. 线

    否则 {\Theme::set('Fawkes');}

更改主题 - 但我需要手动编辑值(主题名称)以在它们之间切换。if 条件中的命令永远不会起作用。

  1. 当我尝试使用此行设置会话值时

    会话::put('theme', $theme);

什么都没发生。但是

在 ServiceProvider 中声明后,可以在视图中看到。

  1. 当我使用命名空间声明时,我得到了错误。这意味着解析了 ServiceProvider 内容。

请帮我解决问题!

编辑:

正如@igaster 所说,Session 对我不起作用。伤心。

尽管如此,igaster/themes readme.md 中提到的 Cookie 解决方案也不起作用。我做了这个测试:

  1. 在任何 VIEW 文件中,此代码

    请求::cookie('themeName');

产生 cookie 的预期值(“Seldon”)

当我在 ServiceProvider 中执行以下代码时

然后在视图中打印会话变量,我得到这样的东西:

eyJpdiI6IjU0eUF6Y3YwaGdmSEhaTVplS3hyQ1E9PSI4InZhbHVl5oiMWhQY2hYRjZ6YzBmUjRDSjc5amNXUT09IiwibWFjIjoiMTEyYTENTc0MjM2ZmE5YzA5OWYwYWE5MjE3OTNhYjZkMTU5NmVmZDcwY

似乎 Cookie 没有经过哈希处理。

谁能告诉我该怎么做才能获得编码值?

  1. 此外,在 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

0 投票
0 回答
561 浏览

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

但它返回以下错误:

我不知道我错过了什么。是关于文件夹吗?

0 投票
1 回答
1657 浏览

php - Laravel 绑定对象接口与在其构造函数中具有变量参数的实现

请注意,在提出这个问题之前,我已经调查过:

laravel-4 将需要配置的对象注入控制器的方法

Laravel 4:将数据从 make 传递给服务提供者

Laravel 4:对如何使用 App::make() 感到困惑

但我看不到他们回答了我的问题!

域模型:一个站点必须有一个所有者,目前这个所有者是客户类型,但将来可以更改为经销商或员工等。所以我使用多态性如下:

类站点有一个所有者属性。Owner 是一个接口,Customer 是一个实现 Owner 的类,Customer 有一个 Name 和一个 Uid,因此这些在 Customer 的构造函数中是必需的。

现在我想将 Customer 实现绑定到 Owner 接口,这样每当我调用 Owner 时,我都会得到一个客户。

我们通常会这样做:

但是 Customer() 需要初始化 $id 和 $name 并且这些是变量对象 - 不是静态的,所以我不知道如何传递它们?

我试过这个:

但在这种情况下,USE 语句中的 $name 和 $id 没有定义。有人有想法吗?

更新:客户构造函数如下:

这将从聚合根(站点)初始化。正确的类型将传递给它。

0 投票
6 回答
20958 浏览

php - Laravel 5 从包服务提供者注册中间件

我目前正在为 Laravel 5 开发一个包。
我的包包含一个自定义中间件,我想$routeMiddleware从我的包 Service Provider 中将它添加到 Kernel 类的数组中。
但我似乎无法找到一种方法来做到这一点。

我试图创建一个扩展内核类的自定义类,然后我可以将数组与我的数组合并。
但是一旦退出构造函数,这是不可能的。

在 L4 中,您有 App::middleware,但该功能在 L5 中不再可用。

解决了这个问题的任何人都可以帮我解决这个问题吗?

请告诉我我的问题是否不够清楚,以便我澄清一下。

0 投票
1 回答
1498 浏览

php - Laravel 如何延迟多个绑定都列在一个服务提供者中?

我希望我的所有存储库都列在一个服务提供商中,但我希望它们一次全部加载...

考虑以下服务提供商:

根据 Laravel 文档,我可以将绑定的注册推迟到需要时。但是,当我在单个服务提供者中添加多个绑定时,这是否有效?具体来说,我的意思是,它会延迟然后加载全部还是只加载需要的那个

0 投票
2 回答
1666 浏览

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 添加了代码示例。

0 投票
1 回答
460 浏览

java - 向服务提供者公开 Java 服务提供者接口

我正在尝试为插件/应用程序创建一个框架,我想我已经决定在 Java 中使用服务提供者接口 (SPI) 来实现这一目标。最终的愿景是人们可以下载插件(如应用商店),然后只需将 jar 放入文件夹中,他们就可以使用现有程序。

所以我有一个课程PluginInterface将成为我的 SPI。我希望所有插件都实现这个类(它有基本的方法,如doesAccept,handle等)。由于第 3 方将创建服务提供者,我怎样才能让他们在他们的代码中引用这个 Java 接口(以便他们可以实现它),而不实际给他们主应用程序的源代码?

0 投票
2 回答
1803 浏览

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 但这似乎不再起作用,还有什么替代方法?

0 投票
1 回答
408 浏览

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 层中。