我正在使用带有angularjs的spring security,当我的会话超时时,我返回一个带有JSON的端点,说会话无效并使用angularjs我尝试重定向到我的登录页面。重定向到登录页面时的问题是会话不再超时,因此会重定向到索引页面。
春季安全
<form-login
login-page="/login"
default-target-url="/index"
username-parameter="username"
password-parameter="password"
authentication-failure-url="/login?loginFailed=true"/>
<logout
logout-success-url="/login"
delete-cookies="JSESSIONID"/>
<session-management
invalid-session-url="/invalid">
<concurrency-control
max-sessions="1"
expired-url="/login"
error-if-maximum-exceeded="true"
/>
</session-management>
宁静的服务
@RequestMapping(method = RequestMethod.GET, value = "/invalid")
@ResponseBody
public String invalidateSession() {
return "{\"invalidSession\":true}";
}
angularjs
if(result.data.hasOwnProperty("invalidSession") && result.data.invalidSession == true){
$location.path("/login");
}
我发现这也会导致spring安全角色出现问题。虽然spring应该使用配置重定向用户
<http auto-config="true" use-expressions="true" access-denied-page="/index">
它不会重定向用户,而是返回HTML页面。
所有这些都可能是angularjs路由引起的,并且我将所有页面都注入到单个html页面中吗?