Является ли ngx-cookie-service полным способом аутентификации для универсальных приложений Angular

Я создаю приложение Angular Universal MEAN (MongoDB, Express, Angular, Node), но я ищу правильный способ обеспечения безопасности. Я знаю, что вы не можете использовать localStorage с Angular Universal. Является ли ngx-cookie-service полноценным способом обеспечения безопасности, авторизации и т. Д.? Реализовал бы что-то вроде этого ...

https://www.npmjs.com/package/ngx-cookie-service

...или это...

https://itnext.io/angular-8-how-to-use-cookies-14ab3f2e93fc

Заменяют ли файлы cookie использование токенов?

Заменил бы он такой код в app.js на бэкэнде:

    app.use((req, res, next) => {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Authorization"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PATCH, PUT, DELETE, OPTIONS"
  );
  next();
});

app.use ("/ api / posts", postsRoutes);

А это на бэкэнде ...

const jwt = require("jsonwebtoken");

module.exports = (req, res, next) => {
  try {
    const token = req.headers.authorization.split(" ")[1];
    const decodedToken = jwt.verify(token, process.env.JWT_KEY);
    req.userData = { email: decodedToken.email, userId: decodedToken.userId, isAdmin: decodedToken.isAdmin };
    next();
  } catch (error) {
    res.status(401).json({ message: "You are not authenticated!" });
  }
};  

Если у вас есть ссылка на хороший пример кода для простого приложения Angular Univeral со стеком MEAN, демонстрирующего правильный способ использования файлов cookie, поделитесь, пожалуйста. Или, возможно, статья с широким пояснением, если это сложное объяснение. Спасибо за уделенное время. Это очень ценно.

K


person Strat    schedule 13.02.2020    source источник


Ответы (1)


ngx-cookies не обеспечивает «полного» способа аутентификации, а просто простой способ установки / получения файлов cookie при использовании angular universal.

В вашем бэкэнде установите и используйте cookieParser

const cookieParser = require('cookie-parser');
app.use(cookieParser());

Затем вместо получения вашего jwt из настраиваемого заголовка авторизации получите его из файла cookie.

const token = req.cookies.authorization.split(" ")[1];
person David    schedule 14.02.2020