尝试使用本教程中的提示:https://spring.io/guides/tutorials/spring-security-and-angular-js/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().and()
.logout().and().authorizeRequests()
.antMatchers("/index.html", "/main.html", "admin.html",
"/login.html", "/")
.permitAll().anyRequest()
.authenticated().and().csrf().disable();
}
我也使用angularjs ngRoute:
var myApp = angular.module('myApp',['ngRoute']);
myApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'main.html',
controller: 'MainController'
})
.when('/admin', {
templateUrl: 'admin.html',
controller: 'AdminController'
})
.when('/login', {
templateUrl: 'login.html',
controller: 'LoginController'
})
.otherwise({
redirectTo: '/'
});
}]);
等等。
但是当我尝试打开管理页面(例如/#/ admin)时,它会打开登录表单(从框中),之后我希望它应该重定向我回到/#/管理员,但它将我重定向到/admin.html,这是在角度控制之外。
如何解决这个问题?
答案 0 :(得分:0)
要解决/错误重定向问题,您可以创建一个像这样的控制器
@Controller
public class ErrorController {
@RequestMapping(value="/error")
public String error() {
return "forward:/index.html";
}
}
从弹簧启动的角度来看,它应该始终落在index.html中,在那里你是"将控件赋予角度"
我假设你的资源文件夹结构如下 资源/静态/ index.html中
以便在访问root时呈现索引。
我的目录结构与教程上的目录结构不同,但它应该可以正常工作
刚刚明白你的问题是什么: 所以在你的角度配置中添加:
$locationProvider.html5Mode(true).hashPrefix('#');
并在index.htm中包含基本标记
<base href="<!-- @echo BASE_URL -->" target="_blank">
这将摆脱&#39;#&#39; charecter,一切都应该工作
希望有所帮助