-
Notifications
You must be signed in to change notification settings - Fork 1
13_restsecurity
A proposta é a configuração e criação de um API REST, com a possibilidade de cadastro de usuário.
Não será abordado a autenticação através que cookie, para um exemplo siga este tutorial.
Começamos este passo na branch topicos/t6/p1.
Vamos começar pela estrutura de cadastro de usuários, criandos os modelos, o repositório e o serviço.
- Dentro da package com.example.demo.model.entities, criem uma nova classe User. Arquivo final.
- Dentro da package com.example.demo.model.request, criem uma nova classe UserCreateRequest. Arquivo final.
- Criar a package: com.example.demo.model.security.
- Dentro da package criada, crie uma nova classe CustomLoginUser. Arquivo final.
- Dentro da package com.example.demo.repository, criem uma nova classe UserRepository. Arquivo final.
- Dentro da package com.example.demo.service, criem uma nova classe UserService. Arquivo final.
Branch final topicos/t7/p1. Para ver as alterações completas DIFF das alterações
Neste ponto, caso tentem acessar a aplicação ela irá exibir a tela de login padrão do spring boot. Vamos então configurar a autenticação da aplicação para exibir uma tela de cadastro de usuários, e permitir o acesso ao swagger sem autenticação.
- Criar a package: com.example.demo.security.config.
- Dentro da package criada, crie uma nova classe WebSecurityConfig. Arquivo final.
- Dentro da package com.example.demo.controller, crie uma nova classe UserController. Arquivo final.
- Dentro da pasta de templates, crie o arquivo userAdd.html Arquivo final.
- Atualize o controller ClientController, para não utilizar a rota principal (/). Arquivo final.
- Atualize o modelo UserCreateRequest, para ajustar a mensagem de erro. Arquivo final.
Branch final topicos/t7/p2. Para ver as alterações completas DIFF das alterações
Agora vamos configurar a estrutura de autenticação, usando um autenticador próprio.
- Dentro da package com.example.demo.model.request, crie uma nova classe LoginRequest. Arquivo final.
- Criar a package: com.example.demo.security.service.
- Dentro da package com.example.demo.security.service, crie uma nova classe AuthProviderService. Arquivo final.
- Dentro da package com.example.demo.security.service, crie uma nova classe TokenAuthenticationService. Arquivo final.
- Criar a package: com.example.demo.security.filters.
- Dentro da package com.example.demo.security.filters, crie uma nova classe JWTAuthenticationFilter. Arquivo final.
- Dentro da package com.example.demo.security.filters, crie uma nova classe JWTLoginFilter. Arquivo final.
- Atualizar o arquivo WebSecurityConfig. Arquivo final.
Branch final topicos/t7/p3. Para ver as alterações completas DIFF das alterações
Siga para o próximo tópico: Validação em REST