https://s3-us-west-2.amazonaws.com/ecode10-image/7f48dbca-9b8c-4ac0-a5be-0a6a1b4407e4session.png

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar um pouco sobre sessão no .NETCore usando a linguagem de programação C# para Web.

O problema:

Eu tenho um site e ele pode ser acessado por usuários se eles tiverem um cadastro e tem áreas que só pode entrar se a sessão do usuário estiver ativa.

Solução:

Para resolver esse problema, basta criar uma tela de login e fazer com que o usuário use o seu e-mail e senha e com isso o sistema gera a sessão necessária para entrar na área restrita.

No .NETCore, as sessões mudaram um pouco e para isso é necessário configurar algumas partes antes.

Passo 1:

Dentro do arquivo Startup.cs vamos acessar o método ConfigureServices. Adicione o código de referência 1.1 na sua solução.

services.AddSession();

Código 1.1 - Adicionando a session

Passo 2:

Dentro do mesmo método é necessário instanciar ou deixar pronto o acessor de contexto. Veja o código 1.2.

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

Código 1.2 - Adicionando o contexto

Lembre-se que deve ser importado o Microsoft.AspNetCore.Http dentro do seu código bem no início do arquivo Startup.cs

using Microsoft.AspNetCore.Http;

Código 1.3 - Importando http

Passo 3:

Dentro do mesmo arquivo, acesse o método Configure e adicione o código 1.4 na sua solução.

app.UseSession();

Código 1.4 - Adicionando a session

Passo 4:

Dentro da página de login, é necessário utilizar o importe do Microsoft.AspNetCore.Http porque é dele que vamos gerar a sessão dentro do sistema para pegar a informação dentro de qualquer outra página.

Veja como gerar a sessão no código 1.5.

HttpContext.Session.SetString("Email", "email@email.com");

Código 1.5 - Gerar sessão em string na página de login

Se o valor for do tipo inteiro, ou seja, numérico é necessário gerar a sessão de outra maneira. Veja o código 1.6.

HttpContext.Session.SetInt32("UserId", 1);

Código 1.6 - Gerando sessão com o valor inteiro.

Passo 5:

É importante adicionar a interface IHttpContextAccessor no construtor da página ou do método que vai usar para o login. Código 1.7.

public LoginModel(IHttpContextAccessor httpContextAccessor)
{
    this._httpContextAccessor = httpContextAccessor;
}

Código 1.7 - Adicionando construtor

É necessário usar no construtor porque é uma injeção de dependência para usar a classe e gerar as sessões que achar necessário dentro da sua aplicação.

Eu fico por aqui e qualquer dúvida por entrar em contato comigo pelo site www.mauriciojunior.net.

Não esqueça de ver a nossa nova plataforma ecode10.academy feita para te ensinar de maneira simples e fácil. Assim você pode virar um programador e mudar a sua vida.