7
respostas

Autenticação - NodeJS

Olá , andei pesquisando sobre como criar o processo de autenticação na aplicação, mais não consegui encontrar muita coisa, como funciona o processo de autorização, se alguém puder ajudar, agradeceria muito :).

7 respostas

Fala ai Cleusa, no curso de MEAN tem um capítulo onde é realizada a autenticação via token utilizando o JWT.

Se você quiser dar uma olhada, tenho um projeto que fiz na faculdade chamado Budpar no meu github, la tem o controller responsável pela autentição, esta um pouco desatualizado com mas serve como base, pois recentemente tive que implementar o mesmo recurso em um projeto particular novo.

Espero ter ajudado

Como deve ser feito a autenticação para que cada usuário tenha somente as suas informações mostradas? Estou com esta dúvida a muito tempo e ainda não consegui solucionar. Lembrando que essas informações devem ser extraídas de um banco de dados MongoDB. Abraços.

Guarde o ID do usuário na sessão, e quando for realizar as buscas nas collections do mongo, faça o filtro do ID referente ao usuário logado.

Estou começando entender, mas gostaria de perguntar se você possui algum artigo que explique como funciona realmente isso. Ou caso tenha um GIT para eu ver o código será melhor ainda. Abraços.

Não tenho nenhum exemplo, mas basicamente seria algo assim:

1)Primeiro: Você devera ter o ID do usuário dentro da sua collection:

// Collection que salva o usuário
const mongoose = require("mongoose");

module.exports = () => {

    const usuario = mongoose.Schema({
        nome : {
            maxlength : 60,
            required : true,
            type : String,
        },
        email : {
            index : {
                unique : true
            },
            maxlength : 255,
            required : true,
            type : String
        },
        senha : {
            maxlength : 10,
            minlength : 8,
            required : true,
            type : String
        }
    });

    return mongoose.model("usuario", usuario);

}

// Collection que possui informações
const mongoose = require("mongoose");

module.exports = () => {

    const documento = mongoose.Schema({
        idUsuario : {
            required : true,
            type : mongoose.Schema.Types.ObjectId
        },
        titulo : {
            index : {
                unique : true
            },
            maxlength : 120,
            required : true,
            type : String
        },descricao : {
            required : true,
            type : String
        }
    });

    return mongoose.model("documento", documento);

}

Veja que temos duas collections, uma para salvar os usuários do sistema e outro para gravar algum documento com título e descrição.

Agora quando o usuário estiver logado no sistema, você tem que salvar o ID dele na sessão, depois busque os documentos filtrando pelo id do mesmo:

module.exports = app => {

    const documento = app.models.documento;

    return {
        listar : (req, res) => {
            documento.find().exec()
                .then(documentos => res.json(documentos))
                .catch(error => {
                    console.log(error);
                    res.status(500).json(error);
                });
        },

        listarPorUsuario : (req, res) => {
            documento.find({"idUsuario" : req.params.idUsuario}).exec()
                .then(documentos => res.json(documentos))
                .catch(error => {
                    console.log(error);
                    res.status(500).json(error);
                });
        },

}

Veja que no controller, tem dois tipos de lista, uma que pega todos e outra que filtra por usuário.

Seria basicamente isso.

Acho que entendi mais ou menos como funciona vou tentar aplicar em uma API aqui que estou desenvolvendo. Mas muito obrigado pela resposta Matheus Castiglioni foi a melhor de todas ainda mais com o código. Abraços.

De nada Winicius, sempre que precisar não deixe de criar suas dúvidas.