2017-11-12 21 views
0

私はvue jsをフロントエンドとして使用していて、laravelで構築された私のappiからユーザを認証した後、その結果としてapiを認証するためのすべての要求を送るトークンを受け取っています。vue jsでのユーザーログイン後に認証トークンを保存するにはどうすればよいですか?

しかし、どのようにしてトークンをブラウザに保存する必要がありますか?

答えて

0

あなたの質問は非常に幅広いです。だから私は一般的な答えを出すつもりです。

localStorageを使用してトークンを格納します。

localStorage.setItem('name','tokenValue'); // to store the token 
localStorage.getItem('name'); // to getthe token value 

単純なウェブ検索では、localStorageについて知っておくべきことがすべて得られます。お役に立てれば。

+0

https://auth0.com/docs/security/store-tokens#web-storage-disadvantages 私がこのブログを読んでのlocalStorageは、XSS攻撃に対して脆弱であることを見出し。 –

+0

トークンを格納するためにクッキーストレージを使用するか、クッキーがcsrf攻撃に対して脆弱であるため、これ以外に安全な方法がありますか?laravelをバックエンドとして使用しているので、laravelはcsrf保護を提供していると思いますか? –

+0

誰かがあなたのローカルストレージからトークンを取得できる場合、彼はまた、クッキーを取得することができます。セキュリティのために、トークンを長く複雑に暗号化することができます。 –

1

私がここで見つけたのは、localStorageがアシンクしていないためです。ログイン後、非常に悪いUXのページ全体をリフレッシュして、vueを使用してから開発したものをリフレッシュする必要があります。

私が推薦することができるのは、isteadはlocalForageです。これはassync localStorage以上のものです。それは約束に基づいており、構文はlocalStorageと非常に似ています。

例:

localforage.getItem('something', myCallback); 

そのdocsで詳細情報。

トークンをバックエンドに送信するには、vue.http.interceptorsを使用する必要があります。

例:

Vue.http.interceptors.push((request, next) => { 
    request.headers['Authorization'] = auth.getAuthHeader() 
    next((response) => { 
     if(response.status == 401) { 
     auth.logout(); 
     router.go('/login?unauthorized=1'); 
     } 
    }); 
}); 
関連する問題