由于“#”而未使用Angular路由和Spring Security保留的URL

时间:2014-12-15 22:47:48

标签: angularjs spring spring-security angular-routing

我遇到的问题是我们使用Angular JS的应用程序必须添加Spring Security。 Spring安全现在可行。问题是在向服务器发出请求之后,所有内容都在"#"之后。在URL中现在丢失了。我知道这是因为浏览器在"#"之后丢弃了所有内容。在发送到服务器之前的URL中。

我的问题是,如果该信息丢失,我怎样才能在登录成功时将用户路由到相应的页面?实现这一目标的最佳方法是什么?

显然,如果你想在"#"之后保留网址,必须在前端处理信息。登录之后。但是,我不确定这是否是spring-security可以为我维护的,或者我自己如何维护它。

例如,假设这是我的角度路由设置:

        .when('/addProducts', {
            templateUrl : 'resources/template/addProduct.html',
            controller : 'addProductController'
        })
        .when('/viewProducts', {
            templateUrl : 'resources/template/viewProducts.html',
            controller : 'viewProductController'
        })
        .otherwise({
            templateUrl : 'resources/template/home.html',
            controller : 'homeController'});

例如,假设用户未登录并请求以下网址: http://localhost:8080/myApp/#/viewProducts 在用户登录后,服务器返回 http://localhost:8080/myApp/ (在&#34之后丢失了所有内容;#"当它被提交到服务器时)

角度路由现在别无选择,只能点击"否则"声明并最终在home.html。这不是他们想要的查看产品页面。

如果有人可以阐明如何完成这项工作,那将非常感激!谢谢!

其他信息:这是我的春季安全文件:

    <http auto-config="true" use-expressions="true">

    <headers>
        <cache-control/>
    </headers>

    <intercept-url pattern="/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />


    <form-login />

    <logout logout-success-url="/" invalidate-session="true"/> 

    <session-management>
        <concurrency-control max-sessions="1"/>
    </session-management>

</http>

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <beans:property name="basenames">
        <beans:list>
            <beans:value>spring_security</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

<!--  Add Users below -->
<authentication-manager>
    <authentication-provider>
        <user-service properties="classpath:users.properties"/>
    </authentication-provider>
</authentication-manager>

0 个答案:

没有答案