Я хочу аутентифицировать свой раздел комментариев моего блога в узле js

У меня есть раздел комментариев под сообщением. Единственное, что я хочу знать, это как аутентифицировать страницу комментариев. Например, в Reddit, если вы не войдете в систему, вы не сможете комментировать, верно? так как это сделать? какие шаги я должен сделать? И да, я знаю, как аутентифицироваться, я использую паспорт js для аутентификации. Я могу заблокировать содержимое своей страницы и все такое, но у меня проблема только с частью комментария.

Этот вопрос слишком расплывчатый. Можете ли вы добавить фрагменты кода и показать нам, что вы уже пробовали?

Yves Gurcan 06.04.2021 17:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Получив запрос на получение сообщения и связанных с ним комментариев, проверьте, отправил ли пользователь токен в заголовках запроса. вы можете использовать для этого простой блок if-else. если вы используете сеансы, проверьте, есть ли у пользователя активный сеанс. Поэтому, если эти условия соблюдены, запросите документы с комментариями и верните их в ответ, иначе просто верните сообщение.

во внешнем интерфейсе, если ответ, полученный от сервера, не имеет комментариев, комментарии являются нулевыми (это действительно зависит от того, как вы отправляете ответ), тогда просто покажите сообщение о том, что Пользователь должен войти в систему

Редактировать 1

в выражении в объекте request есть заголовки, и вы можете отправить токен в этих заголовках и получить к нему доступ следующим образом:

request.headers['your-token-name']

после этого вы должны подтвердить токен и предоставить или отказать в доступе к содержимому.

Теперь предположим, что доступ предоставлен и декодирован, токен сохранен в объекте запроса, например, в переменной с именем decoded. Сейчас

route.get('/:postId?', async(req, res, next)=>{

//place the validate you postId format

try {
 
    const post = await Posts.findOne({postId:req.params.postId})
    if (!post)
        return res.json({success:false, message:'Post not found'})

    if (req.decoded !== undefined || req.decoded !== null){
        const comments = await Comments.find({/*Your condition*/ })
        return res.json({success:true, comments: comments, post:post})
    }else{
        return res.json({success:true, message:'Login to view the comments', post:post})
    }



} catch (error) {
    next(error)
}})

Это очень простой код, позволяющий получить простое представление о том, как он работает в экспресс-бэкэнде. Теперь вам также нужно написать промежуточное ПО для проверки токена.

В этом случае, если токен отправлен, проверьте его. если он действителен, предоставить доступ, иначе вернуть доступ запрещен. Что-то вроде этого

App.use(async (Request,Response,Next)=>{
try {
    let sentToken = Request.headers['access-token'];
    if (sentToken !== undefined && sentToken !== null){
        Request.decoded = await verify(sentToken,'your secret key');
        if (!isTokenValid(Request.decoded))
            return Response.status(403).send({success:false, message:'Please Sign Up or login to continue'});
    }
    await Next();
} catch (error) {
    return Next(error);
}});

Другие вопросы по теме