Spring Social + Spring Security HTTPS / HTTP

时间:2013-08-05 01:39:29

标签: spring spring-security spring-social

如果使用spring社交网站的http或https请求登录时,如何通过http访问记住我的cookie和会话。目前,如果用户通过https登录,则无法通过http页面读取cookie(没有用户登录)。我正在使用use-secure-cookie =" false"但那没有用。

 <s:remember-me key="mykey" services-ref="rememberMeServices" use-secure-cookie="false"/>

 <bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices">
    <property name="userDetailsService" ref="userService" />
    <property name="tokenRepository" ref="persistentTokenRepository" />
    <property name="key" value="mykey" />
    <property name="cookieName" value="rmb" />
    <property name="useSecureCookie" value="false" />
    <property name="tokenValiditySeconds" value="946708560" />
    <property name="alwaysRemember" value="true"></property>
</bean>

我的社交配置:

@Configuration
public class SocialConfig {
      @Inject
        private Environment environment;
      @Inject
        private DataSource dataSource;

        @Inject
        private TextEncryptor textEncryptor;
        @Value("${app.url}")
        private String applicationUrl;
        @Value("${facebook.clientId}")
        private String facebookClientId;
        @Value("${facebook.clientSecret}")
        private String facebookClientSecret;


    @Bean
    public ConnectionFactoryLocator connectionFactoryLocator() {
        ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();

        registry.addConnectionFactory(new FacebookConnectionFactory(
            facebookClientId,
            facebookClientSecret));



        return registry;
    }


    @Bean
    @Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
    public ConnectionRepository connectionRepository() {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication == null) {
            throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in");
        }
        return usersConnectionRepository().createConnectionRepository(authentication.getName());
    }

    @Bean
    public UsersConnectionRepository usersConnectionRepository() {
        JdbcUsersConnectionRepository repository = new JdbcUsersConnectionRepository(
                dataSource, connectionFactoryLocator(), textEncryptor);
        repository.setConnectionSignUp(connectionSignUp());
        return repository;
    }
     @Bean
     public TextEncryptor textEncryptor() {
         return Encryptors.noOpText();
     }

     @Bean
        public ConnectController connectController() {
         ConnectController controller = new ConnectController(
                    connectionFactoryLocator(), connectionRepository());
                controller.setApplicationUrl(applicationUrl);

                return controller;
        }

     @Bean
     public ProviderSignInController providerSignInController(RequestCache requestCache) {
         ProviderSignInController controller = new ProviderSignInController(connectionFactoryLocator(), 
                 usersConnectionRepository(), signInAdapter());

         controller.setSignUpUrl("/register");
         controller.setSignInUrl("/socialSignIn");
         controller.setPostSignInUrl("socialSignIn");
         controller.addSignInInterceptor(new RedirectAfterConnectInterceptor());



         return controller;
     }

     @Bean
     public SignInAdapter signInAdapter() {
         return new SignInAdapterImpl();
     }


     @Bean
     public ConnectionSignUp connectionSignUp() {
         return new ConnectionSignUpImpl();
     }

}

0 个答案:

没有答案