我目前在angularJS路由和Spring Security默认登录表单之间存在冲突时遇到问题。如果我将一个角度路由作为登录页面,它不喜欢它,似乎开始无限重定向循环。
的index.html
<html ng-app='storeApp'>
<head>
<meta charset="ISO-8859-1">
<title>Online Shopping System</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container" ng-controller="testCtrl as tVm">
{{authenticated}}
<ul class="nav nav-pills" role="tablist">
<li class="active"><a href="#/">Home</a></li>
<li><a href="#/customer">Login</a></li>
<li ng-show="authenticated"><a href="" ng-click="tVm.logout()">Logout</a></li>
</ul>
</div>
<div class="container-fluid" ng-view></div>
</body>
<script src="https://code.angularjs.org/1.4.7/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.7/angular-route.min.js"></script>
<script src="https://code.angularjs.org/1.4.7/angular-resource.min.js"></script>
<script src="app.js"></script>
<script src="customers.js"></script>
<script src="products.js"></script>
</html>
在customers.js中的客户页面路由
angular.module('storeApp').config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider){
$routeProvider.
when("/customer", {
templateUrl: "/customer.html"
//controller: 'customerCtrl',
//controllerAs: 'vm'
}).
otherwise({
redirectTo: '/main'
});
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]).controller('customerCtrl', customerCtrl);
WebSecurityConfig.java
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/", "/customer.html", "/index.html", "/main.html", "/*.js", "/user", "/logout").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/customer.html")
.permitAll()
.and()
.httpBasic()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
}
.formLogin()
.loginPage("/customer.html")
.permitAll()
.and()
是我遇到问题的地方。
当用户尝试访问需要在角度页上登录的页面时,它可以正常工作并重定向到正确的路由,我将其作为/#/ customer。但是,当您尝试访问不在匹配器中的非角度页面时,/ asdfasdf,它将转到原始html页面,而不是角度路径。
我想知道的是,有没有办法让WebSecurityConfig使用角度路由?如果没有,解决这个问题的方法是什么?
答案 0 :(得分:0)
我认为您可以在web.xml中配置类似于将未找到的页面路由到现有页面的内容,例如登录页面
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>