JavaScript SDKを使って認証処理を行う際には login/logout メソッドを使って行います。その際の注意点を幾つか紹介します。
ncmb.User.login と user.login の違い
ncmb.User.login を使った認証処理は次のように書きます。
ncmb.User.login(userName, password) .then(function(e) { // ログイン完了 }) .catch(function(e) { // エラー })
次に user.login は次のように書きます。
var user = new ncmb.User; user .set('userName', userName) .set('password', password) .login() .then(function(e) { // ログイン完了 }) .catch(function(e) { // エラー })
処理としてはインスタンスを使っているかどうかなのですが、インスタンス(user)を使った処理の場合、セッション情報がlocalStorageに保存されません。認証結果を保存していないため、再読み込みすると再度ログインを行う必要があります。
一般的には前者の ncmb.User.login を使った方が良いでしょう。
ログアウト処理で失敗する場合
セッション情報が不正になるとログアウト処理(ncmb.User.logout)が失敗してしまいます。この場合の問題としては、localStorageにセッション情報が残り続けてしまうことなので、次のように手動で削除しましょう。
ncmb.User.logout() .then(function() { // ログアウト完了 }) .catch(function(err) { // ログアウト失敗(強制データ削除) localStorage.removeItem("NCMB/"+ncmb.apikey+"/currentUser"); })
これでログアウト状態になります。
データストアを使う場合、正しく権限管理をするためにも認証処理をお勧めします。ユーザ名やメールアドレスとパスワードを組み合わせたものやFacebook/Twitter/Google+といったソーシャルログイン、さらに匿名会員登録も使えますので利用スタイルに合わせたものを選択してください。