vue未登录拦截,vue拦截器不拦截登录接口

  vue未登录拦截,vue拦截器不拦截登录接口

  今天在做一个vue和springboot交互的项目时,想实现一些基于前端的操作,只有登录验证后才能访问,所以这里有一个实现这个功能的解决方案。

  :

目录

   1.解决方案2。让浏览器存储服务器3返回的令牌。在请求4中设置访问权限。封装登录验证你好,我是灰猿,一个擅长写bug的程!

  今天在做vue和springboot互动的项目时,想要基于前端实现一些只有登录验证之后才能访问某些页面的操作,所以在这里总结一下实现该功能的一个解决方案,

  首先,我怎么判断自己有没有登录?

  

一、解决思路

  由于我的springboot后台采用的是shiro Jwt安全框架,登录后会反馈一个令牌给前端,前端会存储这个令牌,所以我是去查找浏览器中是否存在token,如果浏览器中存在token,则说明登录成功,可以访问相关页面;

  如果没有令牌,就没有登录,J跳转到登录页面。为了简化操作,我封装了验证过程。

  注意:使用这种方法进行验证的前提是你的前后端都经过shiro和token的验证,前端会存储服务器返回的token。

  

二、让浏览器存储服务器返回的token

  我们先来看看服务器返回的令牌是如何被我保存在前端页面的。

  首先我在store文件下的index.js文件中封装了一个SET_TOKEN方法,用来存储浏览器中的令牌,这样我们每次都可以通过local storage . getitem(“TOKEN”)在本地获取我们的令牌。同时,我封装了一个REMOVE_INFO方法,用于在我们注销时清除浏览器中的令牌信息。

  存储文件下index.js中的代码如下:

  从“vue”导入Vue

  从“vuex”导入Vuex

  Vue.use(Vuex)

  导出默认的新Vuex。商店({

  状态:{

  //标记:“”,

  //用户的信息可以直接从浏览器中取出

  token:local storage . getitem( token ),

  //反序列化操作

  userInfo:JSON . parse(session storage . getitem( userInfo ))

  },

  突变:{

  /* *类似于设置操作*/

  //给token赋值

  SET_TOKEN: (state,token)={

  state.token=token

  //将信息存储在浏览器中,这样当浏览器关闭时,信息仍然存在

  localStorage.setItem(token ,token);

  },

  //给userinfo赋值

  SET_USERINFO: (state,userInfo)={

  state.userInfo=userInfo

  //每次关闭浏览器都会清除session,重新登录后会生成。

  //由于sessionStorage不能存储对象,所以应该存储为字符串。

  session storage . setitem( userInfo ,JSON . string ify(userInfo));

  },

  //删除用户信息

  REMOVE_INFO: (state)={

  //删除用户信息时,将所有用户信息留空。

  state . token=“”;

  state . userinfo={ };

  localStorage.setItem(token , );

  session storage . setitem( userInfo ,JSON . string ify());

  }

  },

  getters: {

  /* *像get请求*/

  //获取用户信息

  getUser: state={

  return state.userInfo

  }

  },

  动作:{},

  模块:{}

  })

  

三、在请求中设置访问权限

  由于不是我们所有的页面只有登录才能访问,所以我们需要为需要登录的页面设置访问权限。

  在vue中,我们通常在router下的index.js文件中设置访问路由。从010到59000,我们会通过这个属性是否为真来判断是否需要验证登录。

  比如我们的BlogEdit页面只有登录才能访问,登录页面不需要登录权限,我们可以这样设置:对于需要添登录权限的请求路由,我们可以给其增加meta属性,在其中设置一个Boolean类型的属性requireAuth,

  /**

  *路由注册中心

  */

  从“vue”导入Vue

  从“vue路由器”导入vue路由器

  //注册页面

  导入登录名自./views/Login.vue

  从导入日志./views/BlogEdit.vue

  Vue.use(VueRouter)

  常量路由=[

  {

  路径:“/login”,

  名称:登录,

  组件:登录

  },

  {

  路径:“/blog/add”,

  姓名: BlogAdd ,

  组件:BlogEdit,

  //添加权限访问,表示只有登录后才能进行该操作。

  元:{

  要求验证:真

  }

  },

  ]

  const router=new VueRouter({

  模式:“历史”,

  base: process.env.BASE_URL,

  路线

  })

  导出默认路由器

  这将在您每次请求BlogEdit页面时做出判断。

  

四、封装登录验证

  现在我们需要写一个方法来验证我们刚刚设置的属性。所以在src目录中创建一个新的permission.js文件并封装它。

  想法是这样的:首先,我们拦截请求,并获取请求中的requireAuth参数。如果参数为true,我们将在浏览器中获取令牌,以验证它当前是否已登录。如果令牌存在,释放请求;如果您没有获得令牌,请跳转到登录页面。

  注意:如果您基于其他身份验证登录,您可以将

  //获取本地令牌

  const token=ocal storage . getitem(" token ")

  换成你的验证方法,但思路是一样的。

  代码如下:

  /**

  *请求登录验证。如果您未登录,则无法访问该页面并返回登录页面。

  */

  从导入路由器。/router ;

  //根据路由配置文件的参数,通过路由判断登录

  router.beforeEach((收件人,发件人,下一个)={

  //确定路由是否需要登录权限。

  //record.meta.requireAuth是请求中携带的参数。

  if(to . matched . some(record=record . meta . require auth)){

  //获取本地令牌

  const token=local storage . getitem( token )

  Console.log (show token - :token)

  //判断当前令牌是否存在,即登录时的令牌。

  if (token){

  //如果指向登录页面,什么都不做。

  if (to.path===/login){

  }否则{

  //如果不是登录页面,而且令牌存在,就放过。

  下一个()

  }

  }否则{

  //如果令牌不存在

  //转到登录

  下一步({path:/login})

  }

  }否则{

  //如果不需要登录认证,直接访问即可

  下一个()

  }

  })

  最后,别忘了把这个页面引入mian.js

  //导入permission.js,用户可以控制前端权限。

  “导入”。/权限

  总结

  (代码有删减,但是保留了核心部分,只是删除了部分路由。)

  至此,前端认证登录拦截完成。

  关于在vue中设置登录验证拦截功能的详细思路本文到此为止。更多相关Vue登录验证拦截内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: