如何在SecureSocial中禁用提供程序?

vek*_*tor 5 playframework securesocial typesafe-activator

我正在使用Play Framework 2.3.2和Activator 1.2.3,我正在尝试使用SecureSocial插件master-SNAPSHOT.

文档说明如下:

SecureSocial采用模块化架构设计,使用插件.这意味着您可以轻松启用/禁用它们以仅包含您需要的内容,并且如果需要自定义工作方式,您还可以更改自己实现的内置插件.

插件在conf目录下的play.plugins文件中定义.如果您还没有该文件,请创建一个并添加:

[插件示例列表]

只有play.plugins文件中包含的身份验证提供程序才会显示在登录页面上.

(重点补充.)

我现在正在尝试SecureSocial存储库中包含的Java Demo.该play.plugins文件只包含一行:

1500:com.typesafe.plugin.CommonsMailerPlugin
Run Code Online (Sandbox Code Playgroud)

但如果我运行演示,所有提供商都可用: 运行演示截图

如何关闭一些提供商?根据我希望在文档中注释掉一些内容的文档play.plugins,但没有一条可以评论出来.

这里发生了什么?

Jor*_*rge 7

如果未在插件文件中配置提供程序,则必须使用master-SNAPSHOT而不是2.1.3 - 它不再使用Play插件.相反,现在有一个RuntimeEnvironment,您可以在其中配置模块可用的服务(包括您需要实现的UserService).

默认环境包括所有提供程序,并且是演示使用的内容:https://github.com/jaliss/securesocial/blob/master/samples/java/demo/app/service/MyEnvironment.scala

主人和文档中有很多变化尚未更新.要自定义可用的提供程序,您需要创建自己的环境类,扩展RuntimeEnvironment.Default并覆盖提供程序字段.例如:

class MyEnvironment extends RuntimeEnvironment.Default[DemoUser] {
    override val userService: UserService[DemoUser] = new MyUserService()
    override lazy val providers = ListMap(
         include(
            new FacebookProvider(routes, cacheService,oauth2ClientFor(FacebookProvider.Facebook))
         ),
         include(
            new FoursquareProvider(routes,cacheService,oauth2ClientFor(FoursquareProvider.Foursquare))
         ),
         include(
            new UsernamePasswordProvider[DemoUser](userService, avatarService, viewTemplates, passwordHashers)
         )
    )
}
Run Code Online (Sandbox Code Playgroud)

MyUserService您的UserService实现DemoUser位于何处,是您希望用于在操作中表示用户的类.