【问题标题】:Shiro FormAuthenticationFilter basics questionShiro FormAuthenticationFilter 基础问题
【发布时间】:2011-05-29 03:11:34
【问题描述】:

我可以找到大量示例来说明如何配置 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(或类似内容)的小样本,我可以在其中看到用户发生了什么: * 明确进入登录页面 * 自动定向到登录页面(例如,登录会将您带回最初尝试的页面)。 * 从登录页面提交错误的用户名和密码。

【问题讨论】:

    标签: authentication forms-authentication shiro


    【解决方案1】:

    这是我的困惑:不要将您的凭据提交给除 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)
    < 
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      相关资源
      最近更新 更多