サーチ…
流星勘定パッケージ
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は深刻ではありません。したがって、オブジェクトをドキュメントの多くのトップレベルフィールドにフラット化することをお勧めします。