我尝试使用ServletContainerAuthenticatedWebApplication实现登录,并将Wicket中的默认SignInPage注册为登录页面。到目前为止一切正常,当我尝试访问受保护的资源时,它会将我重定向到登录页面,但我无法登录,因为SignInPanel内的用户名和密码字段始终为null,无论我在浏览器中输入的内容是什么。我试用了Wicket 8.0.0-M8和Wicket 7.9.0。一些帮助将在此时受到赞赏。
public class HelloWorldApplication extends ServletContainerAuthenticatedWebApplication
{
private static String EJB_PROJ_NAME = "rezerva_masa_ejb";
public HelloWorldApplication()
{
}
@Override
public void init()
{
super.init();
getComponentInstantiationListeners().add(new JavaEEComponentInjector(this, new AppJndiNamingStrategy(EJB_PROJ_NAME)));
}
@Override
public Class getHomePage()
{
return HelloWorld.class;
}
@Override
protected Class<? extends ServletContainerAuthenticatedWebSession> getContainerManagedWebSessionClass()
{
return ServletContainerAuthenticatedWebSession.class;
}
@Override
protected Class<? extends WebPage> getSignInPageClass()
{
return SignInPage.class;
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>RezervaMasa</display-name>
<filter>
<filter-name>HelloWorldApplication</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>ro.rezervamasa.main.HelloWorldApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<context-param>
<param-name>configuration</param-name>
<param-value>development<!-- deployment --></param-value>
</context-param>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>ApplicationRealm</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/login.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>view_users</role-name>
</security-role>
<security-role>
<role-name>create_users</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>All pages</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>view_users</role-name>
<role-name>create_users</role-name>
</auth-constraint>
</security-constraint>
</web-app>