经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue使用localStorage保存登录信息 适用于移动端、PC端
来源:jb51  时间:2019/5/28 8:54:28  对本文有异议

众所周知,vue可以用来开发移动端app,可以使用hbuilder将build好的vue打包成一个移动端app,但是用过之后就会发现,使用cookies或者session保存登录的token,在手机端无法保存,每次打开app依然提示登录。那么我们可以使用localStorage来保存登录信息就可以了,具体代码如下

1、vuex stroe代码

index.js

  1. import Vue from 'vue'
  2. import vuex from 'vuex'
  3. import { login, logout, getInfo } from '@/api/login'
  4. import { getToken, setToken, removeToken, setlocalStorage, getlocalStorage, removelocalStorage } from '@/utils/user'
  5.  
  6. Vue.use(vuex);
  7.  
  8. //state为访问状态对象 数字常量等
  9. const state = {
  10. x:5,
  11. token: getlocalStorage(),
  12. nickname: '',
  13. course_id: 0,
  14. user_id: 0,
  15. group_id: 0,
  16. begin_group_num: 0,
  17. student_group: 0
  18. };
  19. //访问触发状态mutation是同步的
  20. //actions是异步的
  21. const mutations = {
  22. SET_TOKEN: (state, token) => {
  23. state.token = token
  24. },
  25. SET_NAME: (state, nickname) => {
  26. state.nickname = nickname
  27. },
  28. };
  29. const actions = {
  30. Login({ commit }, userInfo) {
  31. const username = userInfo.username.trim()
  32. return new Promise((resolve, reject) => {
  33. login(username, userInfo.password).then(response => {
  34. const data = response.data
  35. setlocalStorage(data.token)
  36. commit('SET_TOKEN', data.token)
  37. resolve()
  38. }).catch(error => {
  39. console.log()
  40. reject(error)
  41. })
  42. })
  43. },
  44. GetInfo({ commit }) {
  45. return new Promise((resolve, reject) => {
  46. getInfo().then(response => {
  47. const data = response.data
  48. console.log(data)
  49. commit('SET_NAME', data.nickname)
  50. resolve()
  51. }).catch(error => {
  52. console.log()
  53. })
  54. })
  55. },
  56. // 前端 登出
  57. FedLogOut({ commit }) {
  58. return new Promise(resolve => {
  59. commit('SET_TOKEN', '')
  60. removelocalStorage()
  61. resolve()
  62. })
  63. }
  64. };
  65.  
  66. //getters 类似于生命周期里面的钩子,getters是在页面刚刚加载完毕之后马上加载,类似于生命周期里面的created
  67. const getters = {
  68. // 测试getters
  69. x: state => state.x + 200,
  70. };
  71. export default new vuex.Store({
  72. state,
  73. mutations,
  74. getters,
  75. actions
  76. })

2、localStorage 代码

user.js

  1. import Cookies from 'js-cookie'
  2.  
  3. const TokenKey = 'MuseUi-Token'
  4.  
  5. export function getToken() {
  6. return Cookies.get(TokenKey)
  7. }
  8.  
  9. export function setToken(token) {
  10. return Cookies.set(TokenKey, token)
  11. }
  12.  
  13. export function removeToken() {
  14. return Cookies.remove(TokenKey)
  15. }
  16.  
  17. const SessionKey = 'usertoken'
  18. export function setlocalStorage(token) {
  19. return localStorage.setItem(SessionKey,token)
  20. }
  21.  
  22. export function getlocalStorage() {
  23. return localStorage.getItem(SessionKey)
  24. }
  25.  
  26. export function removelocalStorage() {
  27. return localStorage.setItem(SessionKey,null)
  28. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号