2015-04-05 57 views
0

有段时间我在本地主机(Windows 8.1)上开发了我的Wildfly 8.1 web应用程序,并且想要将我的Ubuntu服务器部署到Wildfly 8.2。Wildfly数据库表单登录模块在生产中的失败

本地表单登录与ManagedBean一起使用,但在我的生产服务器上失败。为什么?

  • 数据库连接工作。

因此,我暗示它与我在standalone.xml文件中配置的表单登录有关。这显然是非常类似于我的localhost standalone.xml文件。我检查过,生产中的Wildfly 8.2是真正使用这个standalone.xml文件的!针对生产数据库(与本地主机上的供应商和版本相同)执行主体查询返回恰好为1行。和我在本地开发环境中一样。

但为什么principalsQuery登录模块在生产中不起作用?任何人有任何线索?

<login-module code="Database" flag="required"> 
    <module-option name="dsJndiName" value="java:jboss/datasources/CcmsDS"/> 
    <module-option name="principalsQuery" value="SELECT password FROM User WHERE username=?"/> 
    <module-option name="rolesQuery" value="SELECT role, 'Roles' FROM User JOIN User_Role ON User.id = User_Role.users_id JOIN role ON User_Role.roles_id = Role.id WHERE username=?"/> 
</login-module> 

我可以输出确切的原因在我的prodcution服务器的日志?

这里是ManagedBean代码:

 try { 
      request.login(getUsername(), getPassword());    
     } catch (ServletException e) { 
      LOGGER.info("Failed to login with username " + username + " and password. " + e.getMessage() + ". "); 
      e.printStackTrace(); 
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Login failed", 
        "Login failed when trying to authenticate with user " + getUsername() + ".")); 
      // If this fails, return null. 
      return null; 
     } 

...这里从HttpServletRequestImpl错误消息:

2015-04-05 23:03:06,320 ERROR [stderr] (default task-12) L:71 javax.servlet.ServletException: UT010031: Login failed 
2015-04-05 23:03:06,320 ERROR [stderr] (default task-12) L:71 at io.undertow.servlet.spec.HttpServletRequestImpl.login(HttpServletRequestImpl.java:440) 
2015-04-05 23:03:06,321 ERROR [stderr] (default task-12) L:71 at com.johndoe.controller.security.LoginController.login(LoginController.java:239) 
+0

解决方案:rolesQuery不区分大小写(Windows - > Ubuntu)。我纠正了它,并且prinicipals查询工作。不知道他们为什么相互关联。希望这可以帮助别人。 – feder 2015-04-05 21:41:24

+0

我看不到你在哪里陈述你使用的数据库服务器,对于mysql来说,表名是区分大小写的,因为文件名在Linux上是区分大小写的,但在Windows上不区分大小写 – 2015-04-06 15:25:11

回答

1

决议:rolesQuery是不区分大小写(窗口 - > Ubuntu的)。我纠正了它,并且prinicipals查询工作。不知道他们为什么相互关联。希望这可以帮助别人。

相关问题