我已按照所有教程中的描述完成了它。
module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.24-bin.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-class-name=com.mysql.jdbc.Driver)
[standalone@localhost:9990 /] /subsystem=datasources/data-source=niwads:add(
driver-name=mysql,
user-name=db_user,
password=secret,
connection-url=jdbc:mysql://localhost:3306/appdb,
min-pool-size=5,
max-pool-size=15,
jndi-name=java:/jdbc/niwads,
enabled=true,
validate-on-match=true,
valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker,
exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
)
在浏览器中使用GUI创建安全域,而不是CLI。最后的结果是这样的:
<security-domain name="niwasdnew" cache-type="default">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:/jbdc/niwads" />
<module-option name="principalsQuery" value="select password as 'Password' from user_account where nickname=?" />
<module-option name="rolesQuery" value="select r.rolname as 'Role', r.rolname as 'RoleGroup' from user_account u, role r where r.id=u.role_key and u.nickname=?" />
</login-module>
</authentication>
创建 jboss-web.xml 并将其添加到WEB-INF:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>niwasdnew</security-domain>
</jboss-web>
我的 web.xml 具有 FORM 身份验证角色,所以:
<security-constraint>
<web-resource-collection>
<web-resource-name>pages for masters</web-resource-name>
<url-pattern>/sections/master/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>pages for gardeners</web-resource-name>
<url-pattern>/sections/gardener/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>gardener</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/error.xhtml</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>gardener</role-name>
</security-role>
毕竟,我在WildFly上开始我的项目,我看到我的欢迎页面,转到登录页面,填写所需字段按下登录按钮,它会根据用户的角色将我重定向到适当的位置 < / p>
但我只看到“禁止”错误页面!
我做错了什么?我错过了什么?
答案 0 :(得分:1)
最后,我找到了问题的答案。在此recourse
它告诉我,我在第3步中犯了一个错误,我在SQL sentense中写module-option name="rolesQuery"
:选择r.rolname为'Role', r.rolname as'来自user_account u的RoleGroup',角色r,其中r.id = u.role_key和u.nickname =?
来自资源
注意:RoleGroup列的值必须始终为角色(使用大写“R”)。这是JBoss特有的。
所以propper SQL句子确实有效 - 在我的情况下 - 从user_account u中选择r.rolname为'Role','Roles'为'RoleGroup',角色r其中r.id = u.role_key和u.nickname =? - 正确答案