0

我在使用带有 LDAP 的 Liberty Profile 8.5.5 时遇到问题。我有一个为安全性正确设置了 application.xml 的 EAR 。在耳朵里,我有一个web.xml 设置正确的 web probject。登录身份验证运行良好(request.getRemoteUser()给出正确的结果),但在接下来的操作中,当我使用response.isUserInRoles返回此异常时:

[致命] [isUserInRole - WebAppSecurityCollaboratorImpl.java:327] 方法中的异常...
异常类型:类 java.lang.NullPointerException 消息:null
java.lang.NullPointerException

我真的不明白这怎么会发生......如果有人有解决方案,解决方法,修复,请告诉我。

4

1 回答 1

0

今天,我遇到了您在此处描述的完全相同的问题。我将 WebSphere Liberty Profile 8.5.5.1 与 Eclipse Kepler 一起使用。我的项目使用Wicket 框架,所以在我的 web.xml 中我有 Wicket 过滤器,如下所示:

<filter>
    <filter-name>wicket.filter</filter-name>
    <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
    <init-param>
        <param-name>applicationClassName</param-name>
        <param-value>my.wicket.Application</param-value>
    </init-param>
    <init-param>
        <param-name>configuration</param-name>
        <param-value>deployment</param-value>
    </init-param>
</servlet>

<filter-mapping>
    <filter-name>wicket.filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在调试时,我发现在 isUserInRole 函数内部,WebSphere 似乎在寻找一个 servlet。显然,我没有在我的应用程序中使用任何 servlet,只是使用了 Wicket 过滤器。所以我的解决方法是使用 Wicket servlet 而不是过滤器,这似乎工作正常。

长话短说:当您的应用程序没有任何 servlet 时,似乎 isUserInRole 在 WebSphere Liberty Profile 上不起作用。

于 2013-12-06T15:04:29.863 回答