文件服务器401,javascript - 错误:无法匹配任何路线。 URL段:“配置文件”或无法加载资源:服务器响应状态为401(未经授权) - 堆栈内存溢出...

我正在为MEANAUTH应用程序工作,当我尝试登录并访问用户配置文件https://localhost:3000/prifile时,我想使用angular jwt访问用户配置文件, https://localhost:3000/prifile我Failed to load resource: the server responded with a status of 401 (Unauthorized)或当我尝试使用这些URL`http :// localhost:// localhost:3000 / users / profile``时,出现此错误Uncaught(promise):错误:无法匹配任何路由。 URL段:“用户/配置文件”错误:无法匹配任何路由。 网址段:“用户/个人资料”

这是我的代码

验证服务

import { Injectable } from '@angular/core';

import { HttpClient, HttpHeaders } from '@angular/common/http';

import 'rxjs/add/operator/map';

import { Observable } from 'rxjs';

@Injectable({

providedIn: 'root'

})

export class AuthService {

authToken: any;

user: any;

constructor(private http: HttpClient) { }

registerUser(user){

let headers = new HttpHeaders();

headers.append('Content-Type','application/json');

return this.http.post('http://localhost:3000/users/register', user , {headers: headers})

.map(res => res);

}

authenticateUser(user):Observable{

let headers = new HttpHeaders();

headers.append('Content-Type','application/json');

return this.http.post('http://localhost:3000/users/authenticate', user , {headers: headers})

.map(res => res);

}

getProfile():Observable{

let headers = new HttpHeaders();

this.loadToken();

headers.append('Authorization', this.authToken);

headers.append('Content-Type','application/json');

return this.http.get('http://localhost:3000/users/profile', {headers: headers})

.map(res => res);

}

storeUserDate(token, user){

localStorage.setItem('id_token', token);

localStorage.setItem('user', JSON.stringify(user));

this.authToken = token;

this.user = user;

}

loadToken(){

const token = localStorage.getItem('id_token');

this.authToken = token;

}

logout(){

this.authToken = null;

this.user = null;

localStorage.clear();

}

}

profile.component.ts

import { Component, OnInit } from '@angular/core';

import { AuthService } from '../../services/auth.service';

import { Router } from '@angular/router';

@Component({

selector: 'app-profile',

templateUrl: './profile.component.html',

styleUrls: ['./profile.component.css']

})

export class ProfileComponent implements OnInit {

user: Object;

constructor(private authService: AuthService, private router: Router) { }

ngOnInit() {

this.authService.getProfile().subscribe(profile => {

this.user = profile.user;

},

err => {

console.log(err);

return false;

});

}

}

profile.html

  • Username : {{user.username}}
  • Email : {{user.email}}

这是我的护照restApi代码,我的rest应用程序运行正常,但是当我尝试与angular client集成时,它将显示err。

users.js

const express = require("express");

const router = express.Router();

const passport = require("passport");

const jwt = require("jsonwebtoken");

const config = require("../config/database");

const User = require("../models/user");

//Register

router.post("/register", (req, res, next) => {

//res.send('REGISTER');

let newUser = new User({

name: req.body.name,

email: req.body.email,

username: req.body.username,

password: req.body.password

});

User.addUser(newUser, (err, user) => {

if (err) {

res.json({ success: false, msg: "Failed to register user" });

} else {

res.json({ success: true, msg: "User registered" });

}

});

});

//Authenticate

router.post("/authenticate", (req, res, next) => {

//res.send('AUTHENTICATE');

const username = req.body.username;

const password = req.body.password;

User.getUserByUsername(username, (err, user) => {

if (err) throw err;

if (!user) {

return res.json({ success: false, msg: "User not found!" });

}

User.comparePassword(password, user.password, (err, isMatch) => {

if(err) throw err;

if(isMatch){

const token = jwt.sign({

type: "user",

data:{

_id: user._id,

name: user.name,

username: user.username,

email: user.email

}

},config.secret,{

expiresIn: 604800

}

);

return res.json({

success: true,

token: "JWT "+ token,

user:{

id: user._id,

name: user.name,

username: user.username,

email: user.email

}

});

}else{

return res.json({

success: true,

msg: "Worng Password."

});

}

});

});

});

//Profile

router.get("/profile", passport.authenticate('jwt', {session: false}), (req, res, next) => {

// res.send("PROFILE");

res.json({user: req.user});

});

/* router.get("/profile", passport.authenticate('jwt', {session: false}), (req,res) =>{

console.log(req.user);

return res.json(

req.user

);

})

*/

module.exports = router;

护照

const JwtStrategy = require('passport-jwt').Strategy;

const ExtractJwt = require('passport-jwt').ExtractJwt;

const User = require('../models/user');

const config = require('../config/database');

module.exports = function(passport){

let opts = {};

opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');

opts.secretOrKey = config.secret;

passport.use(new JwtStrategy(opts, (jwt_payload, done) => {

User.getUserById(jwt_payload.data._id, (err, user) => {

if(err){

return done(err, false);

}

if(user){

return done(null, user);

}else{

return done(null, false);

}

});

})

);

}

任何帮助,高度赞赏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值