Spring Security+;Angularjs登录后重定向

Spring Security+;Angularjs登录后重定向,angularjs,spring-security,Angularjs,Spring Security,尝试使用本教程中的想法: 我还使用angularjs ngRoute: var myApp = angular.module('myApp',['ngRoute']); myApp.config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', { templateUrl: 'main.html', controlle

尝试使用本教程中的想法:

我还使用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,但它会将我重定向到/admin.html,这是无法控制的


如何解决此问题?

要解决/错误重定向问题,可以创建如下控制器

@Controller
public class ErrorController {


    @RequestMapping(value="/error")
    public String error() {
        return "forward:/index.html";
    }

}
从SpringBoot的角度来看,它应该总是落在index.html中,在这里您“将控制权交给angular”

我假设你的资源文件夹结构如下 参考资料/static/index.html

因此,在访问根目录时会呈现该索引

我的目录结构与教程中的目录结构不同,但应该可以工作

刚刚了解您的问题是什么: 因此,在您的角度配置中添加以下内容:

$locationProvider.html5Mode(true).hashPrefix('#');
在index.htm中包含基本标记

  <base href="<!-- @echo BASE_URL -->" target="_blank">

对不起,也许我不明白什么,但是Spring Boot给出了这个解决方案的错误:“已经有'ErrorController'bean方法了”。当然,我没有自己编写的其他方法ErrorController,这就是为什么它意味着它是控制/error映射的盒子中的安全bean。我明白了吗?刚刚编辑了我的回答,我想你的问题在于角度配置
  <base href="<!-- @echo BASE_URL -->" target="_blank">