Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

id

ola ,sei que ja fiz a pergunta disso aqui uma vez , mas estou revisando o codigo desde do inicio e vou tentar ser mais especifico dessa.

ao adicionar um produto no carrinho eu e gero um pedidoId correto? no objeto do httpcontext eu obtenho tudo a respeito da requisiçao http certo?

eu coloquei um breakpoint no metodo getpedidoId e obtive essas propriedades: https://prntscr.com/s9eqzv, eu so quero entender melhor como o session obtem esse id eu imaginei que era acessado a propriedade request entao ia no body eu pegaria e salvaria na sessao, algo do tipo. espero que compreendam minha duvida.

5 respostas

Olá Luan, tudo certo?

O que acontece é que o httpcontext carrega um id de sessão. Esse id é setado com o mesmo id do pedido, no caso desta aplicação. A sessão é uma forma de manter estado, que por padrão a web não faz.

Por ter um id que vai identificar a sessão já é possível recuperar os dados do contexto da aplicação, já que ela é injetada como um serviço enquanto a sessão existir. Isso é uma troca. A sessão é criada e carrega uma identificação referente a ela, que no caso é a mesma identificação do pedido. Sempre que usa o GetPedidoId() é feita essa comunicação entre o valor da id da sessão, se ela existe, e o id do pedido que está no contexto.

Mas a ideia é que temos um serviço (contexto) que tem uma id e ela é compartilhada para identificar a sessão. Com essa identificação da sessão impossibilita que haja vazamento de outros pedidos / sessões.

Bons estudos!

deixa eu ver se compreendi fabiano, quando utilizo o método .HttpContext.Session.GetInt33("pedidoid") eu criei um id de sessao certo, mas devo dizer que esse id representa o id do pedido com o metodo set, caso eu nao faço esse set ele nao me vale de nada correto?

outra coisa, se a minha sessao é representada somente pelo idPedido sem o id do cliente como foi feito : contextAccessor.HttpContext.Session.SetInt32($"pedidoId_{GetClienteId()}", pedidoId);

quando eu utilizo getPedido eu posso obter o pedidoId de outra sessao, caso tenha mais de um acesso , por isso devo por junto o id do cliente, isso?

Exatamente. Como esse sistema ainda não tem suporte a login de usuários, é necessário esse id que define o cliente. É necessário identificar a sessão com algo que apenas aquele cliente tem. Neste caso é este id "provisório". Se tivesse um sistema de login, provavelmente seria o id do usuário e o id do pedido.

antes de tudo vlw ae fabiano, mas eu achava que isso ja era um sistema de loggin rsrs , o que e necesario para ter um?

solução!

Isso faz parte, mas sistema de login, permissões e toda essa parte que faz diferença entre o usuário estar logado ou não, é falado no curso de Asp.Net Core parte 3 e 4.

Nesses cursos entram a parte de dados do usuário, cadastro, login e logout, autenticações, permições e etc.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software