2015-11-20 2 views
0

Попытка использовать идею из этого учебника: https://spring.io/guides/tutorials/spring-security-and-angular-js/Spring Security + Angularjs перенаправление после Войти

@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.html, который находится вне углового управления.

Как это решить?

ответ

0

Для решения Перенаправление/ошибок вы можете создать контроллер, как этот

@Controller 
public class ErrorController { 


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

} 

с точки зрения весенне-загрузочном она всегда должна упасть в index.html, где вы «давая управление угловым»

Im предполагая структуру папок ресурсов следующим образом ресурсов/статических/index.html

так, что индекс визуализируется, когда экранный корень.

Моя структура каталогов diffent, чем на уроке, но он должен работать

Просто Понял, что ваша проблема: Так что в вашем угловой конфигурации добавить следующее:

$locationProvider.html5Mode(true).hashPrefix('#'); 

и в индексе .htm включают базовый тег

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

это будет избавиться от charecter «#», и все должно работать

Надеюсь, это поможет

+0

Извините, может быть, я чего-то не понимаю, но Spring Boot дает ошибку для этого решения: «Существует уже« метод компонента ErrorController ». И, конечно, у меня нет других методов ErrorController, написанных мной, поэтому это означает, что это бонус безопасности из окна, который управляет сопоставлениями для/error. Правильно ли я понимаю? –

+0

Только что отредактировал мой ответ, я думаю, ваша проблема в угловой конфигурации – jstuartmilne

Смежные вопросы