Jhipster новые роли - требуется полная аутентификация - PullRequest
1 голос
/ 19 марта 2020

У меня проблема с тем, что я не могу получить доступ к любому URL-адресу при входе в систему на accont с пользовательской определенной ролью.

Чтобы создать новые роли для моего приложения, я добавил свои новые роли в AuthoritiesConstants класс и в authorities.csv. Затем я вручную вставил свои новые нужные роли: ROLE_STUDENT и ROLE_PROFESOR в свою базу данных h2.

Затем я вошел в систему с учетной записью администратора и попытался создать нового пользователя с ROLE_STUDENT. , Затем я вошел в эту новую учетную запись и попытался получить доступ к http://localhost:9000/api/users, чтобы получить полный список пользователей. Я получил следующую ошибку:

2020-03-19 10:59:05.687 DEBUG 13892 --- [ XNIO-1 task-15] base.aop.logging.LoggingAspect           : Enter: base.repository.CustomAuditEventRepository.add() with argument[s] = [AuditEvent [timestamp=2020-03-19T08:59:05.686Z, principal=anonymousUser, type=AUTHORIZATION_FAILURE, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null, type=org.springframework.security.access.AccessDeniedException, message=Access is denied}]]
2020-03-19 10:59:05.691 DEBUG 13892 --- [ XNIO-1 task-15] base.aop.logging.LoggingAspect           : Exit: base.repository.CustomAuditEventRepository.add() with result = null
2020-03-19 10:59:05.693  WARN 13892 --- [ XNIO-1 task-15] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
2020-03-19 10:59:05.695  WARN 13892 --- [ XNIO-1 task-15] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.security.authentication.InsufficientAuthenticationException: Full authentication is required to access this resource]

В моем классе SecurityConfiguration этот URL-адрес подпадает под .antMatchers("/api/**").authenticated(). Таким образом, я должен был иметь доступ к нему из любой учетной записи, пока я вошел в систему.

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

1 Ответ

3 голосов
/ 19 марта 2020

Вы также должны открыть маршруты для новых ролей, это делается на стороне клиента. Примерно так и выглядит, если вы используете angular.

Домашний компонент открыт для всех, как вы можете видеть в файле home.route.ts.

export const HOME_ROUTE: Route = {
  path: '',
  component: HomeComponent,
  data: {
    authorities: [], // <- Empty, so anyone can access the home
    pageTitle: 'home.title'
  }
};

На с другой стороны, если вы хотите предоставить доступ к новой роли в обычном компоненте, вам придется добавить ее в действительный массив полномочий в вашем [entity-name].route.ts.

export const fooRoute: Routes = [
  {
    ...
    data: {
      authorities: ['ROLE_STUDENT', 'ROLE_PROFESOR'],
      ...
    },
...

, который дает доступ к любому пользователь, у которого есть ROLE_STUDENT или ROLE_PROFESOR, но не обычные пользователи (у которых есть только ROLE_USER). Это был просто пример.

В любом случае, если я правильно понял ваш вопрос, вы пытались получить доступ к отображению api/... прямо в браузере. Это не очень хорошая идея, и хорошо, что она терпит неудачу, поскольку клиент обычно добавляет данные в большинство запросов, чтобы они правильно обрабатывались и проверялись сервером (XSRF, auth token, ...).

...