サーチ…
流星勘定パッケージ
Meteorを使用してログインするには、いくつかの選択肢があります。最も一般的な方法は、メテオのaccountsを使用accountsです。
アカウント - パスワード
ユーザーがサイトで作成して登録できるようにするには、 accounts-password使用できaccounts-password 。
meteor add accounts-passwordを使用してパッケージをインストールしmeteor add accounts-password 。
ユーザーを作成するには、 Accounts.createUser(options, [callback])を使用する必要がありAccounts.createUser(options, [callback])
optionsは次のプロパティを持つオブジェクトでなければなりません:
-
username:文字列としてのユーザーのユーザー名。 -
email:文字列としてのユーザーの電子メール。 -
password:文字列としてのユーザーの(暗号化されていない)パスワード。 -
profile:オブジェクトとしてのユーザーのオプションの追加データ。これは、例えば、ユーザの姓名であってもよい。profileはオプションですが、
Meteor.Errorオブジェクトであるエラーがある場合、コールバックは1変数を返します。
usernameまたはemailどちらかを使用する必要がありemail 。そのため、ユーザー名は電子メールなしで作成できます。逆も同様です。両方を使用することもできます。
すべてが正しく行われた場合は、新しく作成されたユーザーIDを返します。
例えば、これを使うことができます:
// server side
var id = Accounts.createUser({
username: "JohnDoe",
email: "[email protected]",
password: "TheRealJohn123",
profile: {
firstName: "John",
lastName: "Doe"
}
}, function(err) {
console.log(err.reason);
});
ユーザーが正常に作成された場合は自動的にログインします。
それが創造的な部分です。ログインするには、 Meteor.loginWithPassword(identifier, password, [callback])をクライアント側で使用する必要があります。
identifierありusername 、 emailまたはuserIdユーザーから文字列として。 passwordは、ユーザーの(暗号化されていない) password 。
Meteor.Errorオブジェクトであるエラーがある場合、コールバックは1つの変数を返します。
例:
// client side
Meteor.loginWithPassword("JohnDoe", "TheRealJohn123", function(err) {
console.log(err.reason);
});
それがアカウントの基本作成とログインのためのものです。
ユーザーデータへのアクセス
ユーザがログインしている場合は、 Meteor.userId()を呼び出すことでログインすることができますMeteor.userId()は、ログインしている場合はuserIdを返し、ログインしていundefined場合はundefinedを返します。
Meteor.user()から情報の一部を取得できます。ユーザーがログインしていない場合はundefinedを返し、ログインしている場合はユーザーデータを返します。デフォルトではパスワードは与えられません。デフォルトでは、ユーザーのユーザーID、ユーザー名、およびプロファイルオブジェクトが表示されます。
ユーザーがページにログインしているかどうかを確認するには、 currentUserヘルパーを使用することもできます。 Meteor.user()内容をMeteor.user()ます。例:
{{#if currentUser}}
<h1>Hello there, {{currentUser.username}}!</h1>
{{else}}
<h1>Please log in.</h1>
{{/if}}
他のアカウント関数
アカウントパッケージごとに機能する他の関数がいくつかあります。
Meteor.logout()を使用してMeteor.logout()できます。
デフォルトのプロファイルフィールドを使用しない
profileと呼ばれる魅力的な既存のフィールドがあり、新しいユーザーが登録するときにデフォルトで追加されます。このフィールドは、歴史的には、ユーザー固有のデータのスクラッチパッドとして使用されていました。イメージアバター、名前、イントロテキストなどです。このため、 すべてのユーザーのprofileフィールドは、そのユーザーによってクライアントから自動的に書き込めます 。また、特定のユーザーのクライアントにも自動的に公開されます。
そのスーパーを明白にすることなく、デフォルトで書き込み可能なフィールドを持つことは、最良のアイデアではないかもしれません。 profile上にisAdminなどのフィールドを格納する新しいMeteor開発者の話はたくさんありprofile 。悪意のあるユーザーは、いつでも自分を管理者にするために、いつでもtrueに設定することができます。これについて心配していなくても、悪意のあるユーザーに任意の量のデータをデータベースに格納させることはお勧めできません。
この分野の特質を扱うのではなく、その存在を完全に無視することは有益です。クライアントからのすべての書き込みを拒否する限り、安全に行うことができます。
// Deny all client-side updates to user documents
Meteor.users.deny({
update() { return true; }
});
プロファイルのセキュリティへの影響を無視しても、すべてのアプリのカスタムデータを1つのフィールドに入れることはお勧めできません。 Meteorのデータ転送プロトコルでは、フィールドのネストされたdiffingは深刻ではありません。したがって、オブジェクトをドキュメントの多くのトップレベルフィールドにフラット化することをお勧めします。