ホームページ  >  記事  >  ウェブフロントエンド  >  クライアントのlocalStorageにトークンを保存する方法

クライアントのlocalStorageにトークンを保存する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-17 09:57:138845ブラウズ

今回は、クライアントの localStorage にトークンを保存する方法を説明します。 トークンをクライアントの localStorage に保存する場合の 注意点 については、次のとおりです。

私たちのバックエンドには次のようなインターフェースがあります:

http://localhost/yiiserver/web/index.php/token?client_appid=aaa&client_appkey=bbb

実際には、クライアントでトークンを生成するだけです (ユーザーテーブルとして理解されます)

ここの

はパスワードに相当します。 client_appid 就相当于用户名,client_appkey

このようにして、バックエンド認証後に

が生成され、クライアントに保存されます。 access-token,我们需要把这个access-token

注: 通常、フロントエンドは別のサーバーにデプロイされ、バックエンドはクロスドメインの問題を処理する必要があります。PHP で次のコードを作成できます。

フロントエンドルーチン

私たちのプロジェクトではすでにそれが使用されていることに注意してください

ユーザー ログインVueX,那么我肯定就要在Store(vuex里的概念)里面来创建一个module ビジネスを処理するための新しい UsersModule.js を作成しました。 エントリ ファイル

に忘れずに導入してください。 「メンバーバックステージ」にもユーザー関連データが必要な場合は、それも導入する必要があります。 UsersModule.js 来处理用户登录的业务,注意不要忘记在入口文件users-index.js

で変更: users-index.js

//指定允许其他域名访问
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET,POST");
header('Access-Control-Allow-Headers: X-Requested-With,content-type,if-modified-since');
1. UsersModule.js

//引入模块
import ResModule from './../Store/modules/ResModules';
import UsersModule from "./../Store/modules/UsersModule";
const vuex_config = new Vuex.Store({
 modules: {
  res:ResModule,
  users:UsersModule
 }
});
アクション部分: クライアントに保存する

メソッドを作成しました。 userLogin()方法,来发送http请求后端服务器,请求成功返回的数据调用在mutations部分定义的setUser()

注: アクション内の

メソッドは、ユーザー ログイン ページ、つまり userslogin.vue で呼び出すためのものです。 userLogin()

それで、

に来て、次のコードを変更してください: userlogin.vue

クライアントの

に正常に保存されたかどうかをテストしてみましょう: localStorage

import Vue from "vue";
export default {
 state:{
  currentUser:{
   get UserName(){
    return localStorage.getItem("currentUser_name");
   },
   get UserToken(){
    return localStorage.getItem("currentUser_token");
   }
  }
 },
 mutations:{
  setUser(state,{user_name,user_token}){
   // 在这里把用户名和token保存起来
   localStorage.setItem("currentUser_name",user_name);
   localStorage.setItem("currentUser_token",user_token);
  }
 },
 actions:{
  userLogin(context,{user_name,user_pass}){
   // 发送get请求做权限认证(真实开发建议用post的方式)
   let url = "http://localhost/yiiserver/web/index.php/token?client_appid="+user_name+"&client_appkey="+user_pass;
   console.log(url);
   Vue.http.get(url)
    .then((res)=>{
     if (res!=null && res.body!=undefined && "access-token" in res.body){
      var token = res.body["access-token"];
      if (token != ""){
       // 后端API验证通过
       // 调用上面mutations里定义的方法
       context.commit("setUser",{"user_name":user_name,"user_token":token});
      }
     }else{
      alert("用户名密码错误");
     }
    },(res)=>{
     alert("请求失败进入这里")
    });
  }
 }
}
2. メンバーシップのバックエンドの場合

http://localhost:8080/member

ユーザー名などのユーザーのログイン情報も取得する必要があります。ナビゲーションバーに表示します。

まず、メンバー バックエンド モジュールのエントリ ファイル

にある必要があります: member-index.js

  methods:{
   login(){
    // 这个验证是element-ui框架提供的方法
    this.$refs["users"].validate(function (flag) {
     if(flag){
      /*localStorage.setItem("currentUser",this.UserModel.user_name);
      alert("用户登录成功");*/
      this.$store.dispatch("userLogin",{"user_name":this.UserModel.user_name,"user_pass":this.UserModel.user_pass})
     }else{
      alert("用户名密码必填");
     }
    }.bind(this));
   }
  }
次に、たとえばナビゲーション バー コンポーネント navbar.vue で次のようにすることができます:

//引入Module
import ResModule from './../Store/modules/ResModules';
import UsersMoule from "./../Store/modules/UsersModule";
const vuex_config = new Vuex.Store({
 modules: {
  res:ResModule,
  users:UsersMoule
 }
});
このようにして、ユーザーの

属性にアクセスします。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:



以上がクライアントのlocalStorageにトークンを保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。