当所有应用程序页面都重命名为.html时,Shiro仍然在寻找login.jsp

时间:2015-09-26 17:50:18

标签: jsp tomcat shiro

我正在修改我的应用程序,将所有.jsp页面重命名为.html。

修改后的shiro.ini如下所示:

[main]
shiro.loginUrl = /login.html

dataSource = org.apache.shiro.jndi.JndiObjectFactory
dataSource.resourceName = java:/comp/env/jdbc/myappDB

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

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = $dataSource
jdbcRealm.credentialsMatcher = $credentialsMatcher

[filters]

[urls]
/login.html = authc
/logout = logout
/secure/** = authc

/api/** = authcBasic, rest

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <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>

    <welcome-file-list>
        <welcome-file>appmain.html</welcome-file>
    </welcome-file-list>

</web-app>

几点:

  • 在我开始将web.xml和应用程序页面修改为.html扩展名而不是.jsp扩展名之前,应用程序运行正常。
  • 当我将鼠标悬停在主页上时,我的主页上的登录链接会显示“http://localhost:8080/myapp/login.html”。但是当我点击它时,我得到404页面未找到错误。
  • 我已经尝试了Firefox和IE11,两者都遇到了同样的问题。多次清除缓存。

关于可能出错的任何指示?

1 个答案:

答案 0 :(得分:0)

我原来的shiro.ini出现了问题。 [main]下面的第一行以shiro.loginURL开头,实际应该是shiro.loginUrl。我做了这个改变,我的应用程序现在运行正常。我也在编辑问题以显示正确的语法。我已经接受了我自己的答案来完成/关闭这个问题。