здесь нужна ваша помощь.
У меня есть страница входа. После ввода имени пользователя / пароля я хочу увидеть страницу панели инструментов. Но я получаю страницу 404, которая не найдена. Кто-нибудь может рассказать, что здесь происходит.
Когда я нажимаю http: // локальный: 8080 -> он переходит в http: // localhost: 8080 / логин - что и ожидается.
После ввода имени пользователя и пароля он переходит в http: // локальный: 8080 - Ожидается: перейти на страницу Личного кабинета, т.е. http: // localhost: 8080 / панель управления

@Component
public class SimpleAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
...
redirectStrategy.sendRedirect(request, response, "dashboard");
}
DashboardController.java
@Controller
@RequestMapping("/dashboard")
public class DashboardController {
@RequestMapping("/")
String init(){
System.out.println("Dashboard - init()");
return "dashboard_init";
}
}
app.component.html
Hello... {{name}}
Hello... {{title}}
<h1>
Welcome {{title}}!
</h1>
<p>Id: <span>{{greeting.id}}</span></p>
<p>Message: <span>{{greeting.content}}!</span></p>
app-routing.module.ts
import {DashboardComponent} from "./dashboard/dashboard.component";
const routes: Routes = [
{ path: '', redirectTo: '/login', pathMatch: 'full' },
// { path: 'dashboard', redirectTo: '/dashboard', pathMatch: 'full' },
{
path: 'dashboard_init',
component: DashboardComponent,
data: { title: 'Dashboard' }
}
];
dashboard.component.ts
@Component({
selector: 'dashboard-component',
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.css'],
})
export class DashboardComponent implements OnInit {
private currentAssociate: Associate;
constructor(private http: Http,
private router: Router) {
}
ngOnInit(): void {
// initialize services and data
this.http
.get('/dashboard')
.toPromise()
.then(response => {
let data = response.json();
if (data.currentAssociate) this.currentAssociate = data.currentAssociate as Associate;
})
.catch(error => {
// this.alertService.error(error);
});
}
}
dashboard.component.html
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:th = "http://www.thymeleaf.org"
xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
xmlns:layout = "http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<meta charset = "utf-8" />
<title>Dashboard</title>
</head>
<div>
<B>Dashboard...</B>
</div>
</html>
Ошибка: (Когда URL-адрес http: // локальный: 8080 / приборная панель /)
Dashboard - init()
[2m2018-03-26 10:07:20.421[0;39m [31mERROR[0;39m [35m13184[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36morg.thymeleaf.TemplateEngine [0;39m [2m:[0;39m [THYMELEAF][http-nio-8080-exec-2] Exception processing template "dashboard_init": Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers
[2m2018-03-26 10:07:20.422[0;39m [31mERROR[0;39m [35m13184[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "dashboard_init", template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
Почему вы внедрили DashboardController? после того, как ваш сервер угловые ресурсы, угловая маршрутизация должна позаботиться о маршрутизации на разные страницы.
С какой целью вы возвращаете dashboard_init в String init ()
@EduardoEljaiek и Vikram: Вот то, что я хочу. После того, как я нажму кнопку входа на странице входа, я хочу увидеть URL-адрес как localhost: 8080 / dashboard с содержимым из html панели управления. Итак, я понял, что когда я перенаправляю на «панель управления» из onAuthenticationSuccess (), он переходит в DashboardController и там перенаправляется на «dashboard_init», а затем в app-routing.module.ts он получит путь и отобразит html панели мониторинга. Я знаю, что где-то ошибаюсь. нужна помощь. Большое спасибо за то, что уделили время, чтобы разобраться в этом вопросе.
@SKumar пропускает вызов DashboartController, а onAuthenticationSuccess () использует маршрутизацию angular напрямую для перенаправления страницы на экран панели инструментов. Проще говоря, приложение angular не должно иметь никаких зависимостей маршрутизации от внутреннего приложения.
@VikramPalakurthi: Вы хотите прокомментировать этот код: redirectStrategy.sendRedirect (запрос, ответ, «панель управления»); Если да, то какие еще изменения?
@Skumar Spring не может маршрутизировать приложение Angular. При компиляции они загружаются в пакеты, поэтому для вызова шаблонов вам понадобится Javascript. Они не отображаются на стороне сервера. См. angular.io/tutorial/toh-pt5, чтобы узнать, как маршрутизировать Angular
Возможный дубликат Angular не направляет на желаемую страницу
Вы можете использовать аннотацию @RestController и вернуть некоторые данные json. И соответственно перенаправить на нужный компонент в самом Angular.




что-то не так в целом .. в Контроллере замените top / dashboard на /
@Controller
@RequestMapping("/")
public class DashboardController {
@RequestMapping("/")
String init(){
System.out.println("Dashboard - init()");
return "dashboard_init";
}
}
Также, насколько я помню, return "dashboard_init" ожидает возврата шаблона dashboard_init.html.
Вероятно, вы хотите перенаправить или что-то в / dashboard_init, например
@RequestMapping(value = "/", method = RequestMethod.GET)
public void index(final HttpServletResponse response) {
response.setStatus(HttpStatus.OK.value());
response.sendRedirect( "/wherever-you-want");
}
Спасибо за Ваш ответ. Не могли бы вы рассказать поподробнее. Я не получил, не понял, какой метод index () ... И вот что я хочу: как только я нажимаю кнопку входа на странице входа, я хочу видеть URL-адрес как localhost: 8080 / dashboard с содержимым из html панели управления. Итак, я понял, что когда я перенаправляю на «панель управления» из onAuthenticationSuccess (), он переходит в DashboardController и там перенаправляется на «dashboard_init», а затем в app-routing.module.ts он получит путь и отобразит html панели мониторинга. Я знаю, что где-то ошибаюсь. нужна помощь.
Эта серия руководств поможет вам интегрировать Spring Security с Angular, используя разные подходы. Начиная с базовой аутентификации
Да, я это видел, но это не объясняет того, как я хотел ... :(
Что вы получите, если напишете локальный: 8080 / приборная панель в адресной строке и нажмете Enter?