Maison >interface Web >js tutoriel >Vue génère un jeton et l'enregistre dans le client Explication détaillée.

Vue génère un jeton et l'enregistre dans le client Explication détaillée.

小云云
小云云original
2018-01-22 09:59:0122498parcourir

Cet article présente principalement la méthode permettant à Vue de générer un jeton et de l'enregistrer dans le localStorage du client. L'éditeur pense que c'est plutôt bon. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Nous avons déjà appris que nous pouvons enregistrer des données sur le client (navigateur) via localStorage.

Notre backend a une telle interface :

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

En fait, juste Les clients (entendus comme une table utilisateur) génèrent un jeton

Vue génère un jeton et lenregistre dans le client Explication détaillée.

Vue génère un jeton et lenregistre dans le client Explication détaillée.

Voici le client_appid Equivalent au nom d'utilisateur , client_appkey équivaut à un mot de passe.

De cette façon, un access-token sera généré après l'authentification backend. Nous devons enregistrer ce access-token sur le client.

Remarque : notre front-end est généralement déployé sur un autre serveur et traversera les domaines. Le back-end doit gérer les problèmes inter-domaines. Vous pouvez écrire le code suivant en PHP :


//指定允许其他域名访问
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');

Routines frontales

Notez que puisque notre projet a déjà utilisé VueX, alors j'utiliserai certainement Store(le concept dans vuex ) pour créer un module.

Vue génère un jeton et lenregistre dans le client Explication détaillée.

Nous avons créé un nouveau UsersModule.js pour gérer l'activité de connexion des utilisateurs. Attention à ne pas oublier de l'introduire dans le fichier d'entrée users-index.js. Si notre « Member Backstage » a également besoin de données relatives aux utilisateurs, elles doivent également être introduites.

Modifier dans users-index.js :


//引入模块
import ResModule from './../Store/modules/ResModules';
import UsersModule from "./../Store/modules/UsersModule";
const vuex_config = new Vuex.Store({
 modules: {
  res:ResModule,
  users:UsersModule
 }
});

1. UsersModule.js


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("请求失败进入这里")
    });
  }
 }
}

section actions : nous avons écrit une méthode userLogin() pour envoyer une requête http au serveur back-end. Les données renvoyées avec succès par la requête appellent la méthode setUser() définie dans la section mutations et l'enregistrent dans. le client.

Remarque : La méthode userLogin() dans les actions permet d'appeler sur la page de connexion de l'utilisateur, c'est-à-dire dans userslogin.vue.

Alors venez sur userlogin.vue et modifiez le code suivant :

Testons s'il est enregistré avec succès dans le localStorage du client :


  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));
   }
  }

Vue génère un jeton et lenregistre dans le client Explication détaillée.

2. Si notre backend membre

http://localhost:8080/member

doit également obtenir les informations de connexion de l'utilisateur, telles que le nom d'utilisateur. à afficher dans la barre de navigation.

Tout d'abord, il doit être dans le fichier d'entrée member-index.js du module backend membre :


//引入Module
import ResModule from './../Store/modules/ResModules';
import UsersMoule from "./../Store/modules/UsersModule";
const vuex_config = new Vuex.Store({
 modules: {
  res:ResModule,
  users:UsersMoule
 }
});

Ensuite on peut, par exemple , le composant de la barre de navigation navbar Dans .vue :


<a href="##" rel="external nofollow" >{{this.$store.state.users.currentUser.UserName}}</a>

De cette manière, accédez aux propriétés des utilisateurs.

Vue génère un jeton et lenregistre dans le client Explication détaillée.

Recommandations associées :

Explication détaillée de l'intercepteur de ressources Vue jugeant le saut d'échec du jeton

Vue utilise un jeton pour accéder à la page de connexion après son expiration

Exemple d'explication détaillée de jQuery Ajax utilisant un jeton pour vérifier l'identité

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn