2016-11-19 3 views
0

Ich versuche this basic login. Die Anmeldung funktioniert gut, aber wenn ich auf http://localhost:1337/login anmelden (wenn ich Werte in der Login-Formular eingeben und senden, zeigt die folgende Fehlermeldung (die URL ändert sich nicht):Warum zeigt res.login keine Funktion?

Typeerror: res.login ist keine Funktion

ich habe versucht, auf dem Netz zu suchen, konnte aber keine Lösung nicht gefunden gibt es einen Syntaxfehler oder ich verwende alte Technologie

Hier ist der notwendige Code:.?

module.exports = { 
    login: function (req, res) { 
    return res.login({ 
     email: req.param('email'), 
     password: req.param('password'), 
     successRedirect: '/', 
     invalidRedirect: '/login' 
    }); 
    }, 
    logout: function (req, res) { 
    req.session.me = null; 
    if (req.wantsJSON) { 
     return res.ok('Logged out successfully!'); 
    } 
    return res.redirect('/'); 
    }, 

    signup: function (req, res) { 
    User.signup({ 
     name: req.param('name'), 
     email: req.param('email'), 
     password: req.param('password') 
    }, function(err, user){ 
     if (err) return res.negotiate(err); 
     req.session.me = user.id; 
     return res.redirect('/welcome'); 
    }); 
    } 
}; 

Modell: user.js

module.exports = { 

    attributes: { 
    email: { 
     type: 'email', 
     required: true 
    }, 
    password: { 
     type: 'string', 
     required: true 
    } 
    }, 

    signup : function(inputs, cb){ 
    User.create({ 
     name: inputs.name, 
     email: inputs.email, 
     password: inputs.password 
    }).exec(cb); 
    }, 

    attemptLogin: function(inputs, cb) { 
    User.findOne({ 
     email: inputs.email, 
     password: inputs.password 
    }).exec(cb); 
    } 

}; 

login.ejs

<h1>Login</h1> 
<form action="/login" method="post"> 

    <label for="email">Your email address?</label> 
    <input name="email" type="text"/> 
    <br/> 

    <label for="password">Your safe word?</label> 
    <input name="password" type="password"/> 
    <br/> 
    <input type="submit"/> 
</form> 

routes.js

'/': { 
    view: 'homepage' 
    }, 
    'get /login' : {view : 'user/login'}, 
    'get /signup' : {view : 'user/signup'}, 
    'get /welcome' : {view: 'user/welcome'}, 
    'post /login' : 'UserController.login', 
    'post /signup' : 'UserController.signup', 
    '/logout' : 'UserController.logout' 
+0

Wie lautet Ihr Code? –

+0

Es ist das gleiche wie das auf der Website geschrieben. –

+0

Auf welche Zeile und Datei wird der Fehler geworfen? –

Antwort

0

Ich glaube nicht, res.login ist eine Funktion, die Sie Verwendung in der Login-Aktion. Ich habe einige Änderungen an Ihrer UserController.js-Datei vorgenommen und sie funktioniert jetzt für mich.

UserController.js

dienen die beiden authentifizierte und nicht authentifizierte Ansichten über Login Aktion. Verwenden Sie eine Sitzungsvariable, um nachzuverfolgen, ob die Sitzung bereits authentifiziert wurde. Ich benutze user.name hier, Sie könnten jedes andere Attribut wie id verwenden.

login: function (req, res) { 
    if (req.method === 'GET' && !req.session.name) { 
     res.view('user/login'); 
    } 
    else if (req.session.name) { 
     res.view('user/welcome', { username: req.session.name }); 
    } else { 
     User.findOne({ email: req.param('email'), password: req.param('password')}) 
      .exec(function (err, user) { 
       if (err) res.send(err); 
       if (!user) res.send("User Not Found"); 
       else { 
        req.session.name = user.name; 
        res.view('user/welcome', { username: user.name }); 
       } 
      }); 
    } 
}, 

user.js Ich habe einen Attributnamen zu User-Modell. Dies war in der Form, aber nicht in der Modelldatei.

attributes: { 
    name: { 
     type: 'string', 
     required: true 
    }, 
}, 

routes.js

sowohl POST Serving und GET-Anfragen vom gleichen Controller/Aktion.

// 'get /login': { view: 'user/login' }, 
'/login': 'UserController.login', 

Probieren Sie diese Zeilen aus und Sie sollten in der Lage sein, es zum Laufen zu bringen. Lass es mich wissen, wenn das hilfreich war.

+0

Es nimmt jede E-Mail und jedes Passwort für die Anmeldung. Es funktioniert also nicht wirklich. Es wird nur umgeleitet, ohne dass die Felder übereinstimmen. –

+0

Es gibt "User Not Found" Fehler für mich, wenn ich mit zufälliger E-Mail/Passwort versuche. Nicht sicher, wie es für Sie arbeitet. – Ranjan

Verwandte Themen