웹 프론트엔드 JS 튜토리얼 클라이언트 localStorage에 토큰을 저장하는 방법

클라이언트 localStorage에 토큰을 저장하는 방법

Apr 17, 2018 am 09:57 AM
localstorage token 고객

이번에는 클라이언트의 localStorage에 토큰을 저장하는 방법을 보여드리겠습니다. 클라이언트의 localStorage에 토큰을 저장할 때 notes는 무엇인가요? 다음은 실제 사례입니다.

저희 백엔드에는 다음과 같은 인터페이스가 있습니다.

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

실제로 클라이언트에서 토큰을 생성하기만 하면 됩니다(사용자 테이블로 이해됨)

여기서 client_appid는 사용자 이름에 해당하고 client_appkey는 비밀번호에 해당합니다. client_appid 就相当于用户名,client_appkey 就相当于密码。 

这样后端认证之后会生成一个access-token,我们需要把这个access-token 保存在客户端。

注意:我们前端一般部署在另外的服务器上,会跨域,后端要处理跨域的问题,在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');
로그인 후 복사

前端的套路

注意,我们项目既然早已用上了VueX,那么我肯定就要在Store(vuex里的概念)里面来创建一个module。 

我们新建了一个UsersModule.js 来处理用户登录的业务,注意不要忘记在入口文件users-index.js 中引入。如果我们的『会员后台』也需要用户相关数据,也要引入。 

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("请求失败进入这里")
    });
  }
 }
}
로그인 후 복사

actions部分:我们写了一个userLogin()方法,来发送http请求后端服务器,请求成功返回的数据调用在mutations部分定义的setUser()方法保存到客户端。 

注意:actions里的userLogin()方法,是供在用户登录页调用的,也就是userslogin.vue里。 

所以来到userlogin.vue,修改如下代码:

我们来测试一下,有没有成功保存到客户端的localStorage 中: 

  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));
   }
  }
로그인 후 복사

2、如果我们的会员后台 

http://localhost:8080/member 

也需要获取用户的登录信息,比如用户名。来显示到导航栏上。

首先是应该在会员后台模块的入口文件member-index.js

이런 방식으로 백엔드 인증 후에 액세스 토큰이 생성됩니다. 이 액세스 토큰을 클라이언트에 저장해야 합니다.

참고: 우리의 프런트 엔드는 일반적으로 다른 서버에 배포되며 백엔드는 도메인 간 문제를 처리해야 합니다. PHP에서 다음 코드를 작성할 수 있습니다. 프런트엔드 루틴

우리 프로젝트는 이미 VueX를 사용했기 때문에 Store(vuex의 개념)에 모듈을 생성해야 합니다.

사용자 로그인

비즈니스를 처리하기 위해 새로운 UsersModule.js를 만들었습니다. 항목 파일

users-에 추가하는 것을 잊지 마세요. index.js 소개. 당사의 "회원 백스테이지"에도 사용자 관련 데이터가 필요한 경우 해당 데이터도 도입해야 합니다.

users-index.js에서 수정:

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

1. UsersModule.js
<a href="##" rel="external nofollow" >{{this.$store.state.users.currentUser.UserName}}</a>
로그인 후 복사

작업 섹션: 백엔드 서버에 http 요청을 보내기 위해 userLogin() 메서드를 작성했습니다. 요청에 의해 성공적으로 반환된 데이터는 setUser()를 호출하여 저장됩니다. 클라이언트에 대한 mutations 섹션에 정의된 메서드입니다.

참고: 액션의 userLogin() 메서드는 사용자 로그인 페이지, 즉 userslogin.vue에서 호출하기 위한 것입니다.

따라서 userlogin.vue로 이동하여 다음 코드를 수정하세요. 🎜 클라이언트의 localStorage에 성공적으로 저장되었는지 테스트해 보겠습니다. 🎜rrreee🎜 2. 우리 멤버십 백엔드라면 🎜🎜 http://localhost:8080/회원 🎜🎜 또한 사용자 이름과 같은 사용자의 로그인 정보를 얻어야 합니다. 탐색 표시줄에 표시합니다. 🎜🎜 우선, 멤버 백엔드 모듈의 member-index.js 항목 파일에 있어야 합니다: 🎜rrreee🎜 그런 다음 예를 들어 탐색 모음 구성 요소 navbar.vue에서 다음을 수행할 수 있습니다. 🎜rrreee🎜 이런 방식으로 사용자의 🎜속성🎜에 액세스하세요. 🎜🎜이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 🎜🎜추천 도서: 🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜

위 내용은 클라이언트 localStorage에 토큰을 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

VMware Horizon Client를 열 수 없습니다. [수정] VMware Horizon Client를 열 수 없습니다. [수정] Feb 19, 2024 pm 11:21 PM

VMware Horizon Client를 사용하면 가상 데스크톱에 편리하게 액세스할 수 있습니다. 그러나 때로는 가상 데스크톱 인프라에 시작 문제가 발생할 수 있습니다. 이 문서에서는 VMware Horizon 클라이언트가 성공적으로 시작되지 않을 때 취할 수 있는 해결 방법에 대해 설명합니다. VMware Horizon 클라이언트가 열리지 않는 이유는 무엇입니까? VDI 구성 시 VMWareHorizon 클라이언트가 열려 있지 않으면 오류가 발생할 수 있습니다. IT 관리자가 올바른 URL과 자격 증명을 제공했는지 확인하세요. 모든 것이 정상이면 이 가이드에 언급된 해결 방법에 따라 문제를 해결하십시오. Windows 컴퓨터에서 VMW가 열리지 않는 경우 VMWareHorizon 클라이언트가 열리지 않는 문제 수정

연결하는 동안 VMware Horizon 클라이언트가 정지되거나 정지됨 [수정] 연결하는 동안 VMware Horizon 클라이언트가 정지되거나 정지됨 [수정] Mar 03, 2024 am 09:37 AM

VMWareHorizon 클라이언트를 사용하여 VDI에 연결할 때 인증 중에 애플리케이션이 정지되거나 연결이 차단되는 상황이 발생할 수 있습니다. 이 문서에서는 이 문제를 살펴보고 이 상황을 해결하는 방법을 제공합니다. VMWareHorizon 클라이언트에 정지 또는 연결 문제가 발생하는 경우 문제를 해결하기 위해 수행할 수 있는 몇 가지 작업이 있습니다. 연결하는 동안 VMWareHorizon 클라이언트가 멈추거나 멈추는 문제 해결 VMWareHorizon 클라이언트가 Windows 11/10에서 멈추거나 연결에 실패하는 경우 아래 언급된 해결 방법을 수행하십시오. 네트워크 연결 확인 Horizon 클라이언트 다시 시작 Horizon 서버 상태 확인 클라이언트 캐시 지우기 Ho 수정

로그인 토큰이 유효하지 않은 경우 수행할 작업 로그인 토큰이 유효하지 않은 경우 수행할 작업 Sep 14, 2023 am 11:33 AM

유효하지 않은 로그인 토큰에 대한 해결 방법에는 토큰 만료 여부 확인, 토큰이 올바른지 확인, 토큰 변조 여부 확인, 토큰이 사용자와 일치하는지 확인, 캐시 또는 쿠키 지우기, 네트워크 연결 및 서버 상태 확인이 포함됩니다. , 다시 로그인하거나 새로운 토큰을 요청하려면 기술 지원팀이나 개발자에게 문의하세요. 자세한 소개: 1. 토큰이 만료되었는지 확인하세요. 일반적으로 로그인 토큰에는 유효 기간이 설정되어 있습니다. 유효 기간이 초과되면 유효하지 않은 것으로 간주됩니다.

localstorage가 데이터를 성공적으로 저장할 수 없는 이유는 무엇입니까? localstorage가 데이터를 성공적으로 저장할 수 없는 이유는 무엇입니까? Jan 03, 2024 pm 01:41 PM

localstorage에 데이터를 저장하는 것이 항상 실패하는 이유는 무엇입니까? 특정 코드 예제가 필요합니다. 프런트엔드 개발에서는 사용자 경험을 개선하고 후속 데이터 액세스를 용이하게 하기 위해 브라우저 측에 데이터를 저장해야 하는 경우가 많습니다. Localstorage는 클라이언트 측 데이터 저장을 위해 HTML5에서 제공하는 기술로, 페이지를 새로 고치거나 닫은 후 데이터를 저장하고 데이터 지속성을 유지하는 간단한 방법을 제공합니다. 그러나 데이터 저장을 위해 로컬 저장소를 사용할 때 때로는

잘못된 로그인 토큰 문제를 해결하는 방법 잘못된 로그인 토큰 문제를 해결하는 방법 Sep 14, 2023 am 10:57 AM

유효하지 않은 로그인 토큰 문제는 네트워크 연결 확인, 토큰 유효 기간 확인, 캐시 및 쿠키 삭제, 로그인 상태 확인, 애플리케이션 개발자 문의 및 계정 보안 강화를 통해 해결할 수 있습니다. 자세한 소개: 1. 네트워크 연결을 확인하고 네트워크에 다시 연결하거나 네트워크 환경을 변경합니다. 2. 토큰 유효 기간을 확인하고 새 토큰을 얻거나 애플리케이션 개발자에게 문의합니다. 3. 캐시 및 쿠키를 지우고 브라우저를 지웁니다. 캐시 및 쿠키를 확인한 후 다시 애플리케이션에 로그인하세요. 4. 로그인 상태를 확인하세요.

PHP MQTT 클라이언트 개발 가이드 PHP MQTT 클라이언트 개발 가이드 Mar 27, 2024 am 09:21 AM

MQTT(MessageQueuingTelemetryTransport)는 IoT 장치 간 통신에 일반적으로 사용되는 경량 메시지 전송 프로토콜입니다. PHP는 MQTT 클라이언트를 개발하는 데 사용할 수 있는 일반적으로 사용되는 서버측 프로그래밍 언어입니다. 이 기사에서는 PHP를 사용하여 MQTT 클라이언트를 개발하는 방법을 소개하고 다음 내용을 포함합니다. MQTT 프로토콜의 기본 개념 PHPMQTT 클라이언트 라이브러리의 선택 및 사용 예: PHPMQTT 클라이언트를 사용하여 게시 및

로컬 저장소 항목의 만료 시간을 설정하는 방법 로컬 저장소 항목의 만료 시간을 설정하는 방법 Jan 11, 2024 am 09:06 AM

로컬 스토리지의 만료 시간을 설정하려면 특정 코드 예제가 필요합니다. 인터넷의 급속한 발전으로 인해 프런트 엔드 개발에는 브라우저에 데이터를 저장해야 하는 경우가 많습니다. Localstorage는 브라우저에 로컬로 데이터를 저장하는 방법을 제공하는 것을 목표로 하는 일반적으로 사용되는 WebAPI입니다. 그러나 localstorage는 만료 시간을 설정하는 직접적인 방법을 제공하지 않습니다. 이번 글에서는 코드 예시를 통해 localstorage의 만료 시간을 설정하는 방법을 소개하겠습니다.

Redis에서 사용자 토큰 저장 문제를 해결하는 방법 Redis에서 사용자 토큰 저장 문제를 해결하는 방법 May 31, 2023 am 08:06 AM

Redis는 사용자 토큰을 저장합니다. 전자 상거래와 유사한 시스템을 설계할 때 일반적인 요구 사항은 각 페이지에 로그인된 사용자 정보를 전달해야 한다는 것입니다. 두 가지 일반적인 솔루션이 있습니다. 쿠키를 사용하여 저장하는 것과 JWT를 사용하여 저장하는 것입니다. 그러나 Redis 캐시가 시스템에서 사용되는 경우 Redis에서 사용자 토큰을 캐싱하는 세 번째 솔루션도 있습니다. 로그인 시 토큰을 생성하여 Redis에 저장 //토큰 객체를 생성하여 redis에 저장 redisTemplate.opsForHash().put("token","user",user)

See all articles