我遇到的问题是我们使用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>