簡體   English   中英

如何使用Angular 6從Express獲得響應

[英]How I can get response from express with Angular 6

我有MEAN Stack app.Angular app內置在公用文件夾中,因此服務器可以在同一端口上運行兩個app。 這是我的后端路線

const express = require('express');
const router = express.Router();
const passport = require('passport');
const jwt = require('jsonwebtoken');
const config = require('../configs/config');
const Admin = require('../models/Admin');
const _ = require('lodash');



  router.get("/login",(req,res)=>{
        console.log("loginAccess");
        res.json({
            loginaccess:true,
        });

    });


router.post('/auth',(req,res,next)=>{
    const email = req.body.email;
    const password = req.body.password;
    Admin.getAdminByEmail(email, (err, admin) => {
        if (err) throw err;
        if (!admin) {
            return res.json({ success: false, msg: 'Admin not found' });
        }

        Admin.comparePassword(password, admin.password, (err, isMatch) => {
            if (err) throw err;
            if (isMatch) {
                let payload = {
                    id: admin._id,
                    email: admin.email,
                    role:config.ADMIN_HERO_STRING
                };
                const token = jwt.sign({ payload }, config.JWT_SECRET,{
                    expiresIn:3600
                });
                Admin.updateToken(email, token, (error, success) => {
                    if (error) return console.log("Error with updating token");
                    console.log(success);
                    res.json({
                        success: true,
                        token: "jwt " + token,
                        admin: {
                            id: admin._id,
                            email: admin.email
                        }
                    });
                    // res.redirect("/admins/home");
                });
            }
        });
    });
});

router.get('/manageApp',passport.authenticate('jwt', { session: false }),(req,res)=>{
    res.json({email:req.user});
});


module.exports = router; 

我正在尋找一種方法可以幫助我從登錄路由中獲取響應並在可能的角度應用程序中使用它。對於這種情況,當我鍵入localhost:3000 / admin / login時,它將響應帶到json之類的頁面,所以我的問題是是將那個jso帶到我的角度。這是我的角度管理服務

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Router } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class AdminService {
  adminAccess:boolean=false;
  constructor(private http: HttpClient, private router:Router) {
      this.isRealAdmin();
   }

  isRealAdmin(){
    if(this.adminAccess){
      return this.router.navigate[('login')];
    }else{
      return false
    }
  }

}

因此,您可以看到它為空,因為我不知道如何從express中獲取json。 我已經為管理員登錄頁面創建了組件,並且如果將該loginaccess用作我的管理員服務, 則將重定向到我的管理員登錄頁面。 感謝您的關注和幫助。

這是你想要的嗎?

this.http.get('/login').subscribe(data => console.log(data.loginaccess));

快速路由配置:

// for web api
app.use('/api', routesApi);

// catch 404 and forward to Angular
app.use(function (req, res, next) {
  res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

// unauthorized error handler
app.use(function (err, req, res, next) {
  if (err.name === 'UnauthorizedError') {
    res.status(401);
    res.json({
      'message': err.name + ': ' + err.message
    });
  } else {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};
    // render the error page
    res.status(err.status || 500);
    res.render('error');
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM