簡體   English   中英

無法以角度發布形式-快速

[英]cannot post form in angular - express

我在angularJS中表達請求有問題。 在客戶端,有一個HTML表單定義:

<div ng-controller="LoginCtrl">
   <form ng-submit="login()">
    <div>
        <label>Username</label>
        <input ng-model="username">

        <label>Password</label>
        <input ng-model="password" type="password">
    </div>
    <button type="submit">Submit</button>
   </form>
</div>

以及Angular控制器中的post方法:

angular.module('app')
  .controller('LoginCtrl', ['$scope', '$state', '$http', function($scope, $state, $http) {

    $scope.login= function(username, password) {
      console.log('Login');
      $http.post('/login', {username:username, password:password}).then(function(response) {
        if(response.data.success) {
          console.log('logged in');
          $state.go('home');
        }
        else {
          console.log('failed to log in');
        }
      });

    };

    $scope.user = {
      username: '',
      password: ''
    };
}]);

在路由的服務器端,有users.js文件,其中定義了中間件:

var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

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

// Login
router.get('/login', function(req, res){
    res.render("login");
});


passport.use('local', new LocalStrategy(
  function(username, password, done) {
   User.getUserByUsername(username, function(err, user){
    if(err) throw err;
    if(!user){
        return done(null, false, {message: 'Unknown User'});
    }

    User.comparePassword(password, user.password, function(err, isMatch){
        if(err) throw err;
        if(isMatch){
            return done(null, user);
        } else {
            return done(null, false, {message: 'Invalid password'});
        }
    });
   });
  }));

passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.getUserById(id, function(err, user) {
    done(err, user);
  });
});

router.post('/login',
  passport.authenticate('local', {successRedirect:'/', failureRedirect:'/login',failureFlash: true}),
  function(req, res) {
    res.redirect('/');
  });

module.exports = router;

當我單擊提交按鈕時,錯誤消息出現在控制台中: POST http://localhost:3000/login 404 (Not Found)

有人知道哪里可能出問題嗎?

這是因為丟失post進行登錄。 您需要類似:

// Login
router.post('/login', function(req, res){
    // validate user credentials and login user
});

暫無
暫無

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

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