Bem-vindo novamente nesta lição, vamos ver um novo material divertido.
Vamos combinar o nosso modelo de usuário a autenticação que cobrimos com acampamentos para garantir que um usuário não possa
excluir o acampamento que ele ou ela não criou ou um usuário não pode editar um acampamento que ele
ou ela não criou.
E isso é chamado de autorização.
Portanto, autenticação e autorização, há autenticação diferente refere-se a descobrir se alguém é quem eles
dizem que são.
Uma boa autorização é quando você sabe quem é alguém.
Você descobre o que eles têm permissão para fazer.
Então pense nisso como permissões.
O que alguém pode o que é alguém autorizado a fazer com a autorização de segurança em nosso aplicativo.
Então, se você não possui um acampamento se você não tiver o mesmo eu. D. como o autor dos acampamentos
que você não poderá atualizá-lo ou excluí-lo.
Então, vamos começar simples e vamos trabalhar com ele para que você não possa dar-lhe o formulário de edição, a menos que
você possua o acampamento.
Então vamos às nossas rotas de acampamento aqui.
E o que queremos fazer é se você tentar ir à rota do acampamento ou atualizar e, eventualmente, excluir
também todos os três, precisamos ter a mesma lógica em que nos verificamos.
O usuário atual é eu. D. combine a identificação do autor para esse acampamento.
Então, lembre-se de que é a nossa estrutura de dados onde levantamos o modelo do acampamento.
Temos autor para cada acampamento e há um I. D. isso vai ser um eu. D. Para um usuário, ele faz referência
ao objeto de um usuário em particular. D. e então temos um usuário, é claro, que tem um objeto I. D. Não é especificado aqui, mas
cada usuário tem um I. D. e vamos comparar os usuários atualmente logados. D. para o ID
do ponto do autor do acampamento, para que possamos fazer isso com bastante facilidade se formos a nossa.
Vamos começar por lá.
E a primeira coisa que queremos fazer é verificar se alguém está conectado ao usuário.
E então, se não, redirecionaremos o verão.
Se um usuário estiver logado, o usuário possui o acampamento.
E se assim for, vamos deixar o usuário executar este código encontrar minha ID e excluir tudo.
Caso contrário, também redirecionaremos.
Então, vamos preencher isso para começar a ver se alguém está logado.
Nós podemos simplesmente escrever, se solicitado, é autenticado.
Nós também poderíamos usar o meio onde já definimos aqui está logado.
Vou mostrar-lhe um momento por que não vamos fazer isso.
A resposta curta é que estamos definindo nosso próprio middleware e apenas um pouco.
Então, vamos combinar essa funcionalidade em vez desse middleware.
Então, se uma solicitação for autenticada se for esse o caso, então, é bom ir.
Se esse não for o caso, vamos fazer um registro constante para começar.
Você precisa estar logado para fazer isso e então vamos fazer uma resposta.
E vamos apenas fazer um envio para iniciar a resposta enviada e nós enviaremos isso na verdade.
Então, se vemos que saberemos que não estamos logados e a primeira coisa estará funcionando.
Então, vamos copiar esse código dentro da instrução if e recusado corretamente.
ESTÁ BEM.
Então temos que estar logados.
O que não é nada novo, já escrevemos um código para fazer isso.
Então você pode estar pensando em que eu estou indo sobre isso de uma forma estranha que nós somos.
Mas você verá em apenas um momento por quê.
Vamos testar isso.
Salve o servidor no início.
E quando eu começar, não estou logado.
Ninguém está logado.
Então, se eu tentar e ir para cortar isso, ele
me diz que você precisa estar logado para fazer isso.
Então nossa primeira parte está funcionando bem.
Então, uma vez que estivermos trancados, teremos outra declaração aqui, que é onde ele irá verificar.
O usuário possui o acampamento.
E a maneira como faremos isso é bastante simples.
A primeira coisa que precisamos fazer é encontrar o acampamento que já fizemos aqui.
E então, uma vez que o encontramos, precisamos verificar se a ID do autor nesse acampamento corresponde
ao usuário atual que solicita esse usuário.
Então, somos bons para ir.
Então, dentro daqui é onde nós realmente fazemos o usuário no acampamento.
Vamos manter o primeiro bit para verificar se há um erro se não houver erro, então verificamos.
o local do acampamento dotar o ID do autor, como você poderia achar que poderíamos fazer isso.
Um usuário no acampamento, porque isso significa que o acampamento encontrado existe e, então, teremos uma declaração if e B se
Igual é igual a igual.
Solicite que o usuário digite o ID do rótulo.
Então, deixe-me mostrar-lhe o que quero dizer, vamos fazer um registro de contato do contato do acampamento do autor, e, em seguida, ele irá
cancelar essa solicitação de log para que o usuário subestime o ID.
Então, comente a afirmação if.
Então vamos ver essas duas linhas.
estar logado, é claro, se eu apenas tentar e atualizar agora sem estar logado, temos um erro.
Eu vou ter que
Mas se eu logar agora, o Potato Head está
logado e então eu volto para o corte de minério de granito.
Nós temos um problema.
Parece que vamos ver.
Bem, isso foi bobo e tentando cancelar como o acampamento no acampamento de Arthur não existe.
É encontrado um acampamento.
Então eu vou tentar novamente, reinicie o servidor.
A primeira vez que estamos frescos.
Você sabe nos dizer que você precisa estar logado ainda.
Então, novamente, entramos na cabeça de batata.
Senha.
ESTÁ BEM.
Agora, se eu tentar
e obter isso, veja o que vemos aqui.
A primeira coisa que imprimimos parece assim.
Então, é encontrado o acampamento Arthur ID e, em seguida, solicitamos que os dados do usuário eu. D. e eles parecem
serem idênticos.
E quando são impressos, eles são idênticos.
Mas, por trás dos bastidores, na verdade não é o mesmo, então solicita que o ID do usuário, seu ID de subtítulo, seja uma string encontrada,
o ID do ponto do autor do campo é um objeto é um objeto de mangustão.
E isso é apenas um complicado.
Eu esqueço isso de vez em quando é realmente frustrante porque eles parecem o mesmo quando
você está tentando depurar, mas a verdade é a primeira não é realmente uma string, é um objeto de mangustão.
Aquele que imprimimos.
Nós vemos uma string, mas essa é apenas a versão de duas seqüências de caracteres.
Por trás das cenas, não é uma string.
E isso é uma string.
Então, quando os comparamos, não funcionará.
Então, em vez de compará-los com iguais triplos ou o dobro, é igual ao que podemos fazer em vez disso, é usar
um método que a mangusta nos dá para esse propósito.
Então, o que fazemos é escrever uma declaração IF colocada em vez de verificar campgrounds.
O autor Dodd ID triplica igual a solicitação na ID do usuário.
Usamos pontos iguais.
Aqui vamos nós.
E agora, nossa declaração IF deve funcionar, exceto pelo fato de que isso precisa ser encontrado novamente no acampamento, o que está
voltando para o banco de dados que estamos encontrando usando essa ID.
Então, descobrimos que, com o ID baseado fora da rota, verificamos se a identificação do autor nesse campo
de encontro encontrado é igual à ID de usuários atualmente logada.
Se for esse o caso, faremos uma coisa.
Caso contrário, faremos outra coisa.
Então, se for esse o caso, iremos fazer isso aqui, clique na página do acampamento da página Editar campground com o acampamento
encontrado.
Caso contrário, enviaremos um descanso.
Você não tem permissão para fazer isso, claro, mudará isso eventualmente ou não será apenas um centavo de ponto vermelho,
mas teremos uma mensagem real que seja exibida.
ir para
a nossa aplicação, vá para uma primeira página da mostra se eu tentar e editá-la agora mesmo. Eu preciso estar logado.
Então, tentemos
Agora, se eu logar ou me inscrevo como alguém além de Potato Head, então
tomarei cabeça de tomate e eu tento editar e você verá esperançosamente.
Lá vamos nós, não tenho permissão para fazer isso.
Agora, se voltar e sair e assinar novamente como Potato Head
e tentar tudo de novo, eu tento e edito.
Eu tenho permissão.
E eu termino aqui.
Então está funcionando.
O que é ótimo.
Agora, o que faremos é realmente refatorar isso em uma função separada.
A maior parte dessa lógica o chamará de algo como.
Verifique o acampamento do usuário ou assegure ao usuário do acampamento algo em que estamos basicamente verificando se o usuário
conectado atualmente corresponde a esse acampamento particular.
E a razão pela qual vamos transferir isso para o middleware é que vamos usá-lo na edição.
Nós também queremos usá-lo na atualização.
Nós não queremos que alguém possa enviar uma solicitação se eles não estiverem logados.
Então, mesmo assim, novamente, apenas usando o navegador.
A única maneira de fazer, de forma visual, obter a atualização para enviar dados, está usando este formulário.
Você poderia usar o postman, você poderia enviar uma solicitação do postman e não ser autenticado.
Então queremos a mesma lógica aqui e queremos fazer o mesmo para excluir.
Então, não queremos que você possa apagar algo de um acampamento se você não estiver logado.
E se você não possui.
Então, o que faremos é escrever um middleware, vamos copiar este código por enquanto.
Vou deixá-lo lá, mas vamos descer por agora, apenas com o nosso outro middleware.
Bem, o final chamou de verificar a propriedade do acampamento assim.
E então vamos colar este código e nós teremos um pouco de trabalho a fazer aqui.
Mas o objetivo final é que, na nossa edição, devemos poder adicionar nosso middleware aqui, verifique a propriedade do acampamento.
Devemos ser capazes de fazê-lo atualizar.
E também em apagar, mas vamos começar com isso e o que queremos fazer é verificar.
Primeiro você precisa adicionar na resposta da solicitação e, em seguida, lembre-se de que o middleware está configurado para solicitar a resposta
a seguir.
Então, se o usuário estiver logado no momento.
Mantenha-se em movimento se você não tiver efetuado o login, em vez de fazer um resto, enviar.
Por enquanto, vamos redirecionar um restaurante e ainda não vimos isso.
Nós podemos redistorar o redirecionamento de volta e isso levará o usuário de volta para onde eles vieram mais.
A página anterior em que estavam e em breve vai mostrar-lhe como podemos enviar uma mensagem.
Bem, a mensagem que queremos enviar é algo como Você não está logado ou você deve ter permissão para
fazer isso, mas nós estamos deixando isso assim por agora.
Então, se eles estiverem logados, iremos encontrar o acampamento.
Se houver um erro, vamos redirecionar novamente também.
Mais uma vez, esse erro aconteceria se o terreno de acampamento não pudesse ser encontrado por
algum motivo ou se o banco de dados não estiver conectado ou é algo estranho, normalmente, que não veríamos senão se o acampamento corresponder
aos pedidos de identificação do usuário.
Então, se o usuário que gosta de possuir isso, em vez de renderizar os campgrounds, editem porque nem sempre
queremos que este middleware para editar o que queremos que ele faça é passar para o resto do código em
excluir ou passar para o código uma atualização ou uma edição.
Então é aí que fazemos o próximo.
Caso contrário, se eles não possuírem, faremos um redirecionamento rez para trás.
Ótimo.
Então, vamos tentar isso salvá-lo e vamos atualizar nossa rota de edição aqui.
Nós podemos reduzir isso muito, então não precisamos fazer nada disso, exceto pelo fato de querermos encontrar o
acampamento e tudo o que faremos é se acharmos um acampamento, não precisamos verificar se ele combina mais porque estamos fazendo isso
no meio onde, então, tudo o que queremos fazer é encontrar um acampamento para se livrar
de tudo isso.
pouco.
Quase todo o formato do Office, isso corretamente, vai desaparecer um
Aqui vamos nós.
Então, porque nós adicionamos a taxa de propriedade do acampamento de Scheck aqui, tudo o que estamos fazendo agora é
se chegarmos a esse ponto, isso significa que já verificamos a propriedade do acampamento e que conseguimos.
Caso contrário, se houver um problema, teríamos redirecionado que ver com o erro que estou recebendo é
que temos um pequeno erro de sintaxe aqui, que é de alguma forma excluído a minha declaração de função aqui e você pode ver que
está reclamando que não estamos lidando com o erro que nós poderíamos lidar.
é se chegarmos a este ponto, não deve haver um erro ao encontrar PI ID porque o fizemos aqui.
Mas o que acontece
E se funcionar aqui, então devemos ser bons para ir de qualquer maneira.
Então, vamos tentar isso, apesar de ver se temos algum problema.
Basicamente, acabamos de mover nosso código para uma função separada.
E lembre-se de um middleware chamado Antes de chegar ao manipulador certo.
ESTÁ BEM.
Então vamos dar uma chance.
Primeiro vamos voltar e vamos tentar e clicar em editar.
Não estou logado.
Deve redirecionar-me de volta para onde eu estava