java - 无法使用 Shiro 运行登录表单

标签 java security jsf shiro

我搜索了很多页面并关注,看来我不是幸运的人,我无法运行我的登录页面(我是新手)。当我点击登录按钮时,没有任何反应。这是我的网络应用程序结构

login.xhtml(JSF 表单)

<h:form prependId="false">
        <h:panelGroup>
            <h:panelGrid id="panel" columns="2" border="1" cellpadding="0" cellspacing="2">
                <h:outputLabel for="username" value="Email" />
                <h:inputText id="username"  />

                <h:outputLabel for="password" value="Password" />
                <h:inputText id="password" />

            </h:panelGrid>
            <h:commandButton value="Login" style="margin-top: 10px;"/>
        </h:panelGroup>
    </h:form>

web.xml

<filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
<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>
<!-- Setup Apache Shiro for Authentication & Authorization -->
<listener>
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>

shiro.ini

[main]
authc = com.beacon.security.MetroFormAuthenticationFilter
authc.loginUrl = /login.xhtml
authc.successUrl  = /home

[urls]
/login.xhtml = authc
/errors/notAuthorized.xhtml = authc
/** = anon

最佳答案

当您使用shiro时,ShiroFilter应该是过滤器链中的第一个过滤器

尝试将您的 web.xml 更改为

    <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<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>
<filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
<!-- Setup Apache Shiro for Authentication & Authorization -->
<listener>
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>

关于java - 无法使用 Shiro 运行登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674937/

相关文章:

java - 在 OSX 上通过 Java 访问 iSight

Java Spring 方法参数需要一个无法找到的 Bean

java - gwt jsni document.documentElement.style.height

php - 如何从密码中获取盐并用它来验证用户?

javascript - 浏览器插件或扩展程序可以查看页面中运行的 JavaScript 变量的值吗

eclipse - Eclipse自动完成素数标签

java - 该项目不适用于 servlet 4.0 和 jsf 2.3

jsf - 为什么 jsf 生命周期在重定向页面时跳过调用应用程序后的渲染响应?

java - 在 Android 中使用 ListView 实现 AutoComplete

java - JCE无法验证Jboss中部署的Webapp中的提供者BC。为什么?