공개 등록을 지원하지 않는 응용 프로그램을 만들고 있습니다. 기존 사용자가 새 사용자를 만들고 새 사용자의 이메일 주소로 등록 이메일을 보냅니다. 이 모든 것이 작동하지만, 구현은 해킹 된 것으로 느껴집니다.암호없이 사용자를 생성 할 때 성공/실패를 클라이언트에게 어떻게 알릴 수 있습니까?
여기까지 코드가 있습니다.
<template name="addUser">
<form role="form">
<div class="form-group">
<label for="firstName">First Name</label>
<input name="firstName" class="form-control" placeholder="First Name" />
</div>
<div class="form-group">
<label for="lastName">Last Name</label>
<input name="lastName" class="form-control" placeholder="Last Name" />
</div>
<div class="form-group">
<label for="email">Email</label>
<input name="email" class="form-control" placeholder="Email" />
</div>
<button type="submit" class="btn btn-primary">{{faIcon 'plus'}} Add User</button>
</form>
</template>
템플릿의 자바 스크립트 : 템플릿
Accounts.createUser
이후
Meteor.methods({
addUser: function (attrs) {
var user = Meteor.user();
if (!user) throw new Meteor.Error(401, 'Please login.');
if (!attrs.profile.firstName) throw new Meteor.Error(422, 'Please include a first name.');
if (!attrs.profile.lastName) throw new Meteor.Error(422, 'Please include a first name.');
if (!attrs.email) throw new Meteor.Error(422, 'Please include an email.');
var user = _.pick(attrs, ['firstName', 'lastName', 'email']);
if (Meteor.isServer) {
var newUserId = Accounts.createUser(attrs);
Accounts.sendEnrollmentEmail(newUserId);
}
}
});
가 클라이언트 측에 암호를 입력해야합니다
Template.addUser.events({
'submit form': function (e, t) {
e.preventDefault();
var attrs = {
email: t.find('[name="email"]').value,
profile: {
firstName: t.find('[name="firstName"]').value,
lastName: t.find('[name="lastName"]').value,
}
};
Meteor.call('addUser', attrs, function (err) {
if (err) {
Errors.throw(err.reason);
} else {
Router.go('home');
}
});
}
});
내 addUser
방법, 나는 방법을 알아낼 수 없습니다 성공 또는 실패를 클라이언트에게 0으로 해킹하는 것을 알리지 않음. 그런 일을하는 좋은 방법은 무엇입니까?
정확히 어떤 정보를 사용자에게 보내려고합니까? 주위에 '오류'가 발생하는 것을 볼 수 있습니다. 충분하지 않아? 왜, 서버에 전체 메서드를 넣으십시오? 또한,'Meteor.call'의 마지막 인수는 메소드 실행이 성공했는지 탐지하는 데 사용할 수있는 콜백이 될 수 있습니다. –
'Accounts.createUser' 또는'Accounts.sendEnrollmentEmail' 호출이 실패하면 사용자에게 알리고 싶습니다. 나는 일반적으로 콜백에서 오류 매개 변수를 찾겠지 만, Accounts.createUser는 콜백을 서버에 전달하면 예외를 던집니다. "오류 : Accounts.createUser 콜백이 아직 서버에서 지원되지 않습니다." 질문을 게시 한 이후로 가장 좋은 점은'if (! newUserId) { \t \t \t throw new Meteor.Error (500, '서버에서 사용자를 생성하는 동안 오류가 발생했습니다. 다시 시도하십시오. '); \t \t} –