gpt4 book ai didi

javascript - Meteor.user() 总是空的

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:55 25 4
gpt4 key购买 nike

我是一名新手 JS 开发人员,我正在尝试开发一个 Meteor 应用程序。我实际上正在尝试使用 Meteor 的帐户包。我遵循了这个非常清楚的教程:http://blog.benmcmahen.com/post/41741539120/building-a-customized-accounts-ui-for-meteor

这是我的登录页面(在 Jade 中):

template(name='login')
div.container
+menuLogin

+form_signin


template(name="form_signin")
form.form-signin(role="form" method="post" action="" id="form-signin" data-toggle="validator")
h2.form-signin-heading Connexion
input.form-control(type="text" placeholder="Nom d'utilisateur" name="userName" autofocus="" required )
input.form-control(type="password" placeholder="Mot de passe" name="password" required )

+profil_choice

button.btn.btn-primary.btn-lg.btn-block.btn-connection(type="submit") Connexion
div.alert.alert-danger.alert-dississible(id="alert-login" role="alert")
button.close(type="button" data-dismiss="alert")
span(aria-hidden="true") ×
span.sr-only Close
p(id="alert-login-text")

和 JavaScript:

Profils = new Mongo.Collection('profils');
Meteor.subscribe('profils');
Meteor.subscribe('users');

var userCursor = Meteor.users.find();
var handle = userCursor.observe({
changed: function (tmp){
console.log(tmp);
Router.go('start');
}
})

var trimInput = function(val){
return val.replace(/^\s*|\s*$/g, "");
}

Meteor.autorun(function (){
var message = Session.get('errorMessage');
if (message){
$('#alert-login-text').text(message);
$('#alert-login').show(200).delay(3000).hide(200);
Session.set('errorMessage', null);
}
});

var checkLoginParams = function(userName, password, profil){
if (profil == ""){
Session.set('errorMessage', "Veuillez selectionner un profil !");
return false;
}
return true;
}

Template.form_signin.events({
'submit form': function (event, template){
event.preventDefault();

var userName = template.find("input[name=userName]").value;
var password = template.find("input[name=password]").value;
var profil = template.find("input[name=profilName]").value;

var username = trimInput(userName);
console.log("user : " + username + " password : " + password);

if (checkLoginParams(username, password, profil) == false){
return;
}

Meteor.loginWithPassword(username, password, function (error){
if (error){
Session.set('errorMessage', "Nom d'utilisateur ou mot de passe incorrect");
console.log(error.reason);
}
});
return false;
}
});

当数据库中的对象用户发生更改时,我实际上正在更改模板(使用 Iron 路由器),因为无论我是否登录,我都找不到其他任何东西来通知我。

Router.route('login', function (){
this.render('login');
});

Router.route('start',{
path: 'start',
onBeforeAction: function () {
if (Meteor.user()){
this.render('start');
}
else{
if (Meteor.loggingIn()){
this.render('start');
}
else{
Router.go('login');
}
}
}
});

问题是,无论我在哪里调用 Meteor.user(),它总是 null。所以...我显然没有连接。

数据库中只有一个用户,我确定连接参数没有问题。

此外,为什么我不能在 loginWithPassword() 回调中执行 Router.go('start')?

编辑:这是我在服务器端创建的用户

if (Meteor.isServer) {
Meteor.startup(function()
{
Accounts.createUser({
username : "admin",
password : "123",
email : "test@test.fr",
isAdmin : true
});
});

最佳答案

问题已通过更新我的 Meteor 版本得到解决。其实...我真的不明白哪里出了问题。

关于javascript - Meteor.user() 总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com