2017-02-04 29 views
0

Я использую Java (maven) для backend и Angular 2 для интерфейса с Shiro. Я могу перемещаться по разным URL-адресам, пока я использую веб-сайт. Ввод URL вручную вызывает ошибку 404.Apache Shiro - URL-адрес браузера работает только при использовании веб-сайта для навигации

Я не уверен, что проблема связана с Angular (поскольку она использует единственную страницу index.html), либо она находится в разделе [URL] в файле shiro.ini.

Оставляя [URL] раздел пустым или добавляя /index.html = anon, продолжает вызывать такую ​​же проблему.

Также, используя authc, перенаправляет меня на login.jsp.

Как я могу разрешить доступ к каждому маршруту независимо от статуса/роли пользователя?

+0

Это обычная проблема, основная проблема заключается в том, что ваш сервер выполняет маршрутизацию запросов. Я не знаю, как работает Сиро, но попробуйте перенаправить маршруты, которые вы используете для своего углового приложения на своем серверном сервере, чтобы всегда возвращать свой index.html. –

ответ

0

Возможно, это проблема на стороне сервера (не Shiro). Первые две вещи, которые нужно проверить, - это если вы используете режим HTML5 (похоже, это зависит от вашего вопроса). Если вы ДОЛЖНЫ обрабатывать угловые маршруты (и пересылать их на страницу index.html)

Вы можете использовать rewrite servlet, чтобы справиться с этим. Вот один example of this.

Существует несколько способов обработки пересылки, вы могли бы просто написать простой сервлет или фильтр.

+0

Я запустил сервлет rewrite, но были некоторые проблемы несовместимости, потому что мой проект работает на более старой версии Java. Я закончил использование [HashLocationStrategy] (https://angular.io/docs/ts/latest/api/common/index/HashLocationStrategy-class.html). Это помещает # после имени проекта, чтобы различать его дочерние элементы. Я верю, что ваш ответ тоже будет работать. Я буду продвигать, если вы можете включить простой пример сервлета/фильтра. – ToDo