为Apache Shiro配置JTDS数据源

时间:2016-09-08 19:12:53

标签: java maven-3 shiro jtds

我最近开始编写JSF应用程序。我使用ecplise neon和maven3以及jetty webserver进行快速测试部署。到目前为止一切都很好,但现在我想尝试apache shiro,因为它似乎是一个非常酷和良好的安全框架。

现在,因为我使用ms sql server我使用jtds db驱动程序。但不幸的是,由于以下错误,我无法使shiro工作:

  

[警告]上下文启动失败oejmpJettyWebAppContext @ 6ea04618 {/,[file:/// E:/ Dev / JSF / Lister / Lister / src / main / webapp /,jar:file:/// C: /Users/Dethrall/.m2/repository/com/sun/faces/jsf-impl/2.2.2/jsf-impl-2.2.2.jar!/META-INF/resources],UNAVAILABLE}{file:/// E:/开发/ JSF /制表/制表/ src目录/主/ web应用/}   org.apache.shiro.config.ConfigurationException:对于net.sourceforge.jtds.jdbcx.JtdsDataSource类型的对象,属性'database'不存在。

特别有趣的是“属性'数据库'部分不存在......” 所以我查看了相应的javadoc,确实没有属性数据库。

这让我们回到了我的问题。我应该如何在shiro.ini中配置jtds数据源。如果有人有任何建议,将不胜感激!

对不起btw因为我对maven,jsf,shiro,jetty等所有新东西感到有些不知所措......

的web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>

    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
    </context-param>

    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>ShiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ShiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
</web-app>

的pom.xml

...

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>${shiro.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-web</artifactId>
    <version>${shiro.version}</version>
</dependency>

...

shiro.ini

[main]

#authc = org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter

authc.loginUrl = /faces/login.xhtml
authc.successUrl = /faces/users.xhtml
logout.redirectUrl = /faces/users.xhtml

ds = net.sourceforge.jtds.jdbcx.JtdsDataSource
ds.serverName = localhost
ds.portNumber = 1434
ds.user = lister
ds.password = 1234
ds.database = Lister

sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.authenticationQuery = SELECT password FROM trs_sec_t_users WHERE username = ?
jdbcRealm.userRolesQuery = SELECT role FROM trs_sec_t_roles WHERE username = ?

#jdbcRealm.credentialsMatcher = $sha256Matcher


[users]
#admin = admin, ROLE_ADMIN
#root = 1234, ROLE_ADMIN

[roles]
#ROLE_ADMIN = *

[urls]
/faces/users.xhtml = authc

1 个答案:

答案 0 :(得分:1)

在shiro.ini中,尝试:&#39; ds.database 名称 = Lister&#39;