正如标题所述,我在war层创建了一个类,并使用@Picketlink进行注释。注意,我有一个ear部署结构(ejb,war)。
自定义身份验证器:
@PicketLink
public class PicketlinkAuthenticator extends BaseAuthenticator { }如果我将该类放入ejb层,身份验证是可以的,但当我将其放到war层时,项目似乎找不到它抛出的情况:
20:49:46,027 INFO [org.picketlink.common] (default task-10) Using logger implementation: org.picketlink.common.DefaultPicketLinkLogger
20:49:46,043 INFO [org.picketlink.idm] (default task-10) PLIDM001000: Bootstrapping PicketLink Identity Manager
20:49:46,068 WARN [org.picketlink.idm] (default task-10) PLIDM001101: Working directory [\tmp\pl-idm] is marked to be always created. All your existing data will be lost.
20:49:46,111 INFO [org.picketlink.idm] (default task-10) PLIDM001100: Using working directory [\tmp\pl-idm].
20:49:46,127 DEBUG [org.picketlink.idm] (default task-10) No partitions to load from \tmp\pl-idm\pl-idm-partitions.db
20:49:46,152 DEBUG [org.picketlink.idm] (default task-10) Initializing Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436] with id [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,153 DEBUG [org.picketlink.idm] (default task-10) Loaded Agents for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,154 DEBUG [org.picketlink.idm] (default task-10) Loaded Credentials for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].为什么不直接将验证器移到ejb端呢?->Because,我正在抛出自定义错误,比如用户过期,等等。我需要jsf发布这些错误消息。
为什么不移动web层中的picketlink依赖项呢?将扩展picketlink帐户的->Because我的帐户绑定到我的服务。
正如这里所建议的,我已经在war项目中添加了picketlink模块:https://docs.jboss.org/author/display/PLINK/JBoss+Modules
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<sub-deployment name="THE-WAR-MODULE-THAT-REQUIRES-PICKETLINK.war">
<dependencies>
<module name="org.picketlink" />
</dependencies>
</sub-deployment>
</jboss-deployment-structure>不管怎么说?我只想显示一些自定义错误:
发布于 2014-06-08 01:48:00
我无法解决这个问题,但我有一个变通的解决方案,就是将picketlink模块移动到web层,并将标识实例传递给需要它的服务。
发布于 2016-07-17 14:36:00
我也有一段时间没有遇到同样的问题(现在是2016年.)。使其工作的似乎是添加以下CDI注释:
@PicketLink
@Name
@RequestScoped
public class PicketlinkAuthenticator extends BaseAuthenticator { }我本来希望核心身份验证管理器仅仅基于@PicketLink注释来获得这个结果,但是如果没有CDI注释,定制的Authenticator类甚至都不会被加载。也许还有另外一种方法需要我们引导PicketLink --但是我找不到任何引用。
https://stackoverflow.com/questions/23632402
复制相似问题