Shiro FormAuthenticationFilter основы вопросов - PullRequest
1 голос
/ 22 декабря 2010

Я могу найти множество примеров, которые показывают, как настроить 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 (или аналогичным), где я мог видеть, что происходит, когда пользователь: * Заходит явно на страницу входа * Направляется автоматически на страницу входа (например, вход в систему возвращает вас на исходную страницу попыток). * Отправляет неверное имя пользователя и пароль со страницы входа.

1 Ответ

2 голосов
/ 17 мая 2011

Вот мое замешательство: не отправляйте свои учетные данные ни на что, кроме 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)
< 
...