Git Product home page Git Product logo

mathmastery's Introduction

Bem vindo ao meu GitHub! 👋

www.gustavovoltolini.com.br

  • Desenvolvedor Pleno na AmbevTech 🍺.
  • Desenvolvo por trabalho e diversão, aqui você encontrará um pouco dos dois 👨‍💻.
  • Algumas curiosidades: Gosto de hackathons, cinema e FPS 🕹️.

Linguagens

Frameworks e Libs

Ferramentas

Onde me encontrar:

Gustavo Voltolini | LinkedIn gustavo_volt | Instagram




GustavoAV2 Status Top Linguagens

mathmastery's People

Contributors

gustavoav2 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

mathmastery's Issues

Adicionar autenticação com token JWT aos Endpoints

  • Adicionar controle de permissão em todos os Endpoints necessários;
  • Criar controle de acesso nivel Admin;
  • Adicionar tempo de expiração ao TokenJwt

A autenticação com JWT (JSON Web Token) em ASP.NET Core é feita com a ajuda de pacotes NuGet, como o Microsoft.AspNetCore.Authentication.JwtBearer. Este pacote permite validar tokens JWT e proteger endpoints com base em roles e claims definidos no token.

Para utilizar autenticação token JWT em C# ASP.NET Core, siga os seguintes passos:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;

public void ConfigureServices(IServiceCollection services)
{

    // Configura autenticação JWT
    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = "Issuer",
            ValidAudience = "Audience",
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecretKey"))
        };
    });

}

Neste exemplo, a chave secreta é "SecretKey", o emissor do token é "Issuer" e o público-alvo é "Audience".

Configure a autenticação na classe Startup.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Ativa autenticação
    app.UseAuthentication();
    app.UseAuthorization();
}

Proteja um endpoint com autenticação JWT utilizando o atributo [Authorize]:

[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{
    [HttpGet]
    [Authorize]
    public IActionResult Get()
    {
        // Retorna dados protegidos
    }
}

Neste exemplo, o método Get() só pode ser acessado por usuários autenticados.

Gere um token JWT na autenticação do usuário:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;

[ApiController]
[Route("[controller]")]
public class AuthController : ControllerBase
{
    private readonly IConfiguration _config;

    public AuthController(IConfiguration config)
    {
        _config = config;
    }

    [AllowAnonymous]
    [HttpPost("login")]
    public IActionResult Login([FromBody] LoginModel login)
    {
        if (login == null)
        {
            return BadRequest("Invalid client request");
        }

        if (login.Username == "user" && login.Password == "password")
        {
            var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
            var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, "user"),
                new Claim(ClaimTypes.Role, "admin")
            };

            var tokeOptions = new JwtSecurityToken(
                issuer: _config["Jwt:Issuer"],
                audience: _config["Jwt:Audience"],
                claims: claims,
                expires: DateTime.Now.AddMinutes(5),
                signingCredentials: signinCredentials
            );

            var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);

            return Ok(new { Token = tokenString });
        }
        else
        {
            return Unauthorized();
        }
    }
}

Neste exemplo, a classe LoginModel é usada para representar as credenciais de login do usuário. Ao fazer login com sucesso, um token JWT é gerado, contendo o nome do usuário e a função "admin" (como um exemplo), com validade de 5 minutos.

As informações issuer, audience, key e outros detalhes de configuração do token são obtidos do arquivo de configuração do aplicativo (appsettings.json):

"Jwt": {
    "Issuer": "Issuer",
    "Audience": "Audience",
    "Key": "SecretKey"
}

Com essas configurações, você já pode utilizar a autenticação JWT em seus endpoints ASP.NET Core. Certifique-se de testar sua implementação adequadamente e ajustar as configurações de segurança conforme necessário para atender às necessidades do seu aplicativo.

Criar Logica de Ranking

  • Criar tabela de ranking;
  • Cada partida gera pontuação para subir de ranking;
  • Ao fim da partida renderizar nível e XP ganho;
  • Mostrar ranking do Perfil e dos amigos;

Atualizar README

  • Propósito do projeto;
  • Prints e exemplos;
  • Instalação, criação do projeto e configuração do banco de dados;
  • UML, desenho do banco e fluxos e diagramas (Se existirem);

Adicionar criptografia de senhas

  • Salvar a senha criptografada no banco de dados
  • Converter a senha para validação somente
  • Converter a senha na alteração de dados do usuário (Put user)

Duplicação de pedidos de amizade

  • Não deve ser possível requisitar amizades mais de uma vez para um determinado perfil, isso deve ser validado
  • Não deve ser possivel receber, aceitar ou negar um convite mais de uma vez

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.