我正在尝试this basic login。注册工作正常,但是当我登录http://localhost:1337/login
时(当我在登录表单中输入值并提交时,它会显示以下错误(URL不会更改):
TypeError:res.login不是函数
我试图在网上搜索但找不到任何解决方案。是否存在语法错误或我使用旧技术?
这是必要的代码:
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');
});
}
};
型号: 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 :(得分:0)
我认为let storyboard = UIStoryboard(name: "Main", bundle: nil)
let sw = storyboard.instantiateViewControllerWithIdentifier("SWRevealViewController") as! SWRevealViewController
self.window?.rootViewController = sw
let cv = storyboard.instantiateViewControllerWithIdentifier("IDOFCONTROLLER") as! NAMEOFCONTROLLER
let navigationController = UINavigationController(rootViewController: cv)
sw.pushFrontViewController(navigationController, animated: true)
是您在登录操作中使用的功能。我对你的UserController.js文件进行了一些更改,现在它正在为我工作。
<强> UserController.js 强>
通过登录操作提供经过身份验证和未经身份验证的视图。使用会话变量来跟踪会话是否已经过身份验证。我在这里使用user.name,你可以使用任何其他属性,如id。
res.login
<强> user.js的强> 我在User模型中添加了一个属性名称。这是在表单中,但不在模型文件中。
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 });
}
});
}
},
<强> routes.js 强>
从同一个Controller / Action提供POST和GET请求。
attributes: {
name: {
type: 'string',
required: true
},
},
尝试这些线条,你应该能够让它运作起来。如果这有用,请告诉我。