Shiro FormAuthenticationFilter基本问题

时间:2010-12-21 23:00:19

标签: authentication forms-authentication shiro

我可以找到很多示例来说明如何配置URL以使用authc过滤器,但我找不到任何适合的简单登录页面的示例。我正在使用Spring集成到Shiro,但我不认为这与我的问题有任何关系。

通过阅读文档,我设置了我的过滤器工厂:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="loginUrl" value="/login.jsp" />
        <property name="successUrl" value="/Reports.jsp" />
        <property name="securityManager" ref="securityManager" />
        <property name="filterChainDefinitionMap">
                <map>
                        <entry key="/ws/**" value="authc" />
                        <entry key="/Reports.jsp" value="authc" />
                        <entry key="/**" value="anon" />
                </map>
        </property>
</bean>

我将为您提供整个xml文件。我可以说它正在选择正确的过滤器,因为当我这样做时:

> curl -v localhost:8080/factorlab-web/Reports.jsp

我收到了这个回复:

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=19gdgnmukynb3;Path=/factorlab-web
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=19gdgnmukynb3
< Content-Length: 0
< Server: Jetty(6.1.21)
<

到目前为止,这么好,对吗?但是,如果我提交用户名和密码,我应该获取Reports.jsp的内容,对吧?我不。如果我这样做: * curl -v -d“username = demo&amp; password = demo&amp; rememberMe = false”http://localhost:8080/factorlab-web/Reports.jsp

我得到的答案与以前相同:

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=qnidg37bqo9f;Path=/factorlab-web
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=qnidg37bqo9f
< Content-Length: 0
< Server: Jetty(6.1.21)
<

显然,我对配置或它应该如何工作感到困惑。首先,任何人都可以告诉我我应该从第二个卷曲命令中得到什么,或者为什么我看不到我期待的东西?

第二,是否有一个带有login.jsp(或类似)的小样本,我可以看到当用户发生了什么时: *明确转到登录页面 *自动定向到登录页面(例如,登录会将您带回原始尝试页面)。 *从登录页面提交错误的用户名和密码。

1 个答案:

答案 0 :(得分:2)

这是我的困惑:不要将您的凭据提交给loginUrl以外的任何其他内容。所以,就我而言,我的login.jsp中的表单帖子不应该命名一个不同的端点。在上面的例子中,而不是

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/Reports.jsp

我应该测试

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/login.jsp

将返回:

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=1bug6rem2iecb;Path=/factorlab
< Set-Cookie: rememberMe=deleteMe; Path=/factorlab; Expires=Mon, 16-May-2011 00:32:27 GMT
< Location: http://localhost:8080/factorlab/Reports.jsp;jsessionid=1bug6rem2iecb
< Content-Length: 0
< Server: Jetty(6.1.21)
<