Различные страницы входа для мобильных и настольных компьютеров при использовании Spring Security - PullRequest
1 голос
/ 08 марта 2012

Я использую веб-аутентификацию spring-security с spring-mvc, пока все хорошо, но сейчас я разрабатываю мобильную версию своего приложения, для которой я разработал другой набор страниц для мобильного сайта, который включает в себядругая страница входа.Теперь у меня есть проблемы с настройкой, что

вот мое applicationContext-security.xml

    <?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <http auto-config="true" lowercase-comparisons="false">
        <intercept-url pattern="/images/**" filters="none" />
        <intercept-url pattern="/Stylesheets/**" filters="none" />
        <intercept-url pattern="/JavaScript/**" filters="none" />
        <intercept-url pattern="/scripts/**" filters="none" />
        <intercept-url pattern="/favicon.ico" access="ROLE_ANONYMOUS" />
        <intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
        <intercept-url pattern="/mobile/**" access="ROLE_USER,ROLE_ADMIN"/>
        <form-login login-page="/login.htm" authentication-success-handler-ref="customHandler"
            authentication-failure-url="/login.htm?error=true" default-target-url="/home.htm"
            login-processing-url="/j_security_check"  />
         <remember-me user-service-ref="userDAO" key="e37f4b31-0c46-11dd-bd0b-0800200c9a66"/>
    </http>

    <beans:bean id="customHandler" class="com.example.auth.AuthenticationHandler">
    </beans:bean>

    <authentication-manager>
        <authentication-provider user-service-ref="userDAO">
            <!--
            TODO skipped to allow password emailing instead of password change and security
            TODO question hell..
          -->
           <!--  <password-encoder ref="passwordEncoder"/>  -->
        </authentication-provider>
    </authentication-manager>

</beans:beans>

Теперь, как я могу иметь несколько страниц входа в систему в соответствии с другим запросом, я имею в виду, если страницы мобильныхПапка, чем пользователь должен быть показан на странице мобильного входа.Я видел похожие вопросы по stackoverflow, но это были страницы входа в систему в соответствии с разными ролями, но в моем случае я хочу использовать diff входа для разных страниц.

привет, спасибо за решение, похоже, он будет работать нормально для меня,Теперь я перешел на Spring Security 3.1, но это дает мне исключение.Можете ли вы помочь мне решить эту проблему.

Error creating bean with name 'org.springframework.security.filterChains': Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#4' while setting bean property 'sourceList' with key [4]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#4': Cannot create inner bean '(inner bean)' of type [org.springframework.security.web.authentication.logout.LogoutFilter] while setting constructor argument with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#6': Cannot resolve reference to bean 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices#0' while setting constructor argument with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices#0': Cannot create inner bean '(inner bean)' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanInitializationException: Property 'sessionFactory' is required for bean '(inner bean)#7'

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Вам нужно будет предоставить пользовательскую точку входа для аутентификации и принять решение там.Этот SO ответ может быть отправной точкой, которую вы можете использовать.

0 голосов
/ 08 марта 2012

Если у вас есть возможность переключить защиту пружины 3.1, вы можете просто определить 2 http-элемента 1 .Если вы не можете переключиться, вы не можете полностью настроить его через пространство имен, но должны зарегистрировать элементы entry-point-ref и somd <sec:custom-filter>.

...