我可以找到大量示例来说明如何配置 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&password=demo&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)
<
显然,我对配置或它应该如何工作感到困惑。首先,谁能告诉我我应该从第二个 curl 命令中得到什么,或者为什么我没有看到我所期待的?
其次,是否有一个带有 login.jsp(或类似文件)的小样本,我可以在其中看到当用户发生以下情况时会发生什么: * 明确转到登录页面 * 自动定向到登录页面(例如,登录会将您带回原始尝试页面)。* 从登录页面提交错误的用户名和密码。