Jhipster novos papéis - de autenticação completa é necessária

ROBlackSnail:

Eu tenho um problema onde eu não posso ace qualquer url enquanto estiver conectado em um accont, com um papel definido personalizado.

Para criar os novos papéis para o meu aplicativo, eu adicionei meus novos papéis na AuthoritiesConstantsclasse e no authorities.csv. Então eu inserido manualmente minhas novas funções desejadas: ROLE_STUDENTe ROLE_PROFESORna minha h2-banco de dados.

Então eu entrei na conta de administrador e tentou e conseguiu criar um novo usuário com o ROLE_STUDENT. Então eu conectado a essa nova conta e tentou acessar http://localhost:9000/api/userspara obter a lista completa de usuários. Eu tenho o seguinte erro:

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]

Na minha SecurityConfigurationclasse, este url cai sob .antMatchers("/api/**").authenticated(). Então, eu deveria ser capaz de acessá-lo de qualquer conta, enquanto eu estou logado.

Para meu espanto, parece que eu não pode acessar qualquer URL, além da home page, a partir desta conta. Eu verifiquei manualmente meu banco de dados para ver se o usuário foi criado e tem a função correta. Tudo está bem lá. alguém ajuda pode me resolver isso?

vicpermir:

Você tem que abrir as rotas para os novos papéis também, isso é feito no lado do cliente. Isso é mais ou menos como ele olha, se você usar angular.

O componente de casa é aberto a qualquer pessoa como você pode ver no arquivo home.route.ts.

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

Por outro lado, se você quiser conceder acesso a um novo papel em um componente regular, você vai ter que adicioná-lo à matriz autoridades válido em seu [entity-name].route.ts.

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

Que dá acesso a qualquer usuário que tenha qualquer ROLE_STUDENTou ROLE_PROFESOR, mas não usuários regulares (que só tem ROLE_USER). Este foi apenas um exemplo.

Em qualquer caso, se eu entendi sua pergunta corretamente, você estava tentando acessar um api/...mapeamento diretamente no seu navegador. Isso não é uma boa idéia e é bom que ele falhar uma vez que o cliente geralmente adiciona material para a maioria dos pedidos para que sejam devidamente tratados e validados pelo servidor ( XSRF, auth token...).

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=318499&siteId=1
Recomendado
Clasificación