Перенаправление на домашнюю страницу после входа в HTML с весенней безопасностью - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь войти и перенаправить запрос на домашнюю страницу. В моем текущем состоянии я могу войти в систему успешно, но просматривая пустую страницу. Я не хочу использовать стратегию перенаправления весной / на стороне сервера. Моя страница входа в HTML выглядит так:

<!DOCTYPE html>
<html>
<body>
<form action="/login.html" method="post">
    <input type="text" name="username" required>
    <input type="password" name="password" required>
    <input type="submit" value="Login" />
</form>
</body>
</html>

Конфигурация безопасности Spring:

http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/**").hasAnyRole(new String[] { "ADMIN" }).and().formLogin().loginPage("/login.html").permitAll();

Я хочу внести некоторые исправления в сам HTML, чтобы перенаправить запрос на домашнюю страницу в случае успеха и на саму страницу входа в случае сбоя. Как я могу это сделать? Я много искал, но не нашел идеального решения, будет хорошо, если кто-то опубликует ответ здесь.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вы можете реализовать конечную точку для [проверки, вошел ли пользователь в систему] [1].

Затем вы можете написать функцию javascript для вызова этой конечной точки и перенаправления при аутентификации пользователя. Вызовите функцию с <body onload="yourfunction()">

[1] Как проверить, вошел ли пользователь в систему Spring-Security?

0 голосов
/ 05 июля 2018

Я смог выполнить работу, используя угловой js:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="loginapp" ng-controller="loginctrl"> 
<form ng-submit="login();">
    <input type="text" ng-model="username" required>
    <input type="password" ng-model="password" required>
    <input type="submit" value="Login" />
</form>
</div>
<script>
var loginapp = angular.module('loginapp', []);
loginapp.controller('loginctrl', function($scope, $http, $window) {
    $scope.login = function(){$http({
        method: 'POST',
        url: '/login.html?username='+$scope.username+'&password='+$scope.password,
        headers: {'Content-Type': 'application/json'}
    }).then(function(response){$scope.user=response.data;$window.location.href= '/';});};
});
</script>
</body>
</html>
0 голосов
/ 05 июля 2018

Вам нужно будет указать пользовательский successHandler, как это

http.formLogin()
  .loginPage("/login.html")
  .successHandler(myCustomSuccessHandler);

В вашем successHandler вы можете перенаправить на любой URL, который вы хотите.

См. Javadoc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...