vue退出登录 vue退出登录清除cookie

莫娜号 1

vue项目实现用户登录 以及携带token

在Vue中创建登录表单非常简单,只需要使用v-model指令绑定用户输入的值,并在表单中添加一个按钮来触发登录即可。

console.error(`登录失败,错误消息=${error}`);

vue退出登录 vue退出登录清除cookievue退出登录 vue退出登录清除cookie


vue退出登录 vue退出登录清除cookie


调取登录接口 (首先明确一下要做到事情)

在前后端完全分离的情况下,Vue项目中实现token验证大致思路如下:

1、次登录的时候,前端调后端的登陆接口,发送用户名和密码

2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个token

3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页面

4、前端每次跳转路由,就判断 localStroage 中有无 token ,没有就跳转到登录页面,有则跳转到对应路由页面

5、每次调后端接口,都要在请求头中加token

6、后端判断请求头中有无token,有token,就拿到token并验证token,验证成功就返回数据,验证失败(例如:token过期)就返回401,请求头中没有token也返回401

7、如果前端拿到状态码为401,就清除token信息并跳转到登录页面

调取登录接口成功,会在回调函数中将token存储到localStorage和vuex中

1.

export default {

},

mods: {

/////判读账号密码是否输入,没有则alert 出来

}};

在store文件夹下的index.js 添加 token

Vue.use(Vuex);

const store = new Vuex.Store({

state: {

},

mutations: {

}});

export default store;

二,配置 路由导航守卫

import Router from 'vue-router';

import login from '@/components/login';

import home from '@/components/home';

Vue.use(Router);

routes: [

]});

// 导航守卫

// 使用 router.beforeEach 注册一个全局前置守卫,判断用户是否登陆

router.beforeEach((to, from, next) => {

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

} else {

}});

export default router;

三、请求头加token 在 main.js中添加

// 添加请求,在请求头中加token

config => {

},

error => {

});

token的过期可以自定义

四、如果前端拿到状态码为401,就清除token信息并跳转到登录页面

localStorage.removeItem('Authorization');

this.$router.push('/login');

66人点赞

前段学习

Vue项目启动过程以及配置

我们点击 npm run dev 的时候,这就是启动 Vue 工程项目,那么它启动过程是什么样的呢? Vue 项目启动过程,本文简要介绍。

在执行 npm run dev 的时候,会在当前目录中寻找 package.json 文件,包含项目的 名称版本 、 项目依赖 等相关信息。

从下图中可以看到, 启动 npm run dev 命令后,会加载 build/webpack.dev.conf.js 配置并启动 webpack-dev-server 。

webpack.dev.conf.js 中引入了很多模块的内容,其中就包括 config 目录下环境的配置文件。

可以看到,在 index.js 文件中包含 host 和 port 以及入口文件的相关配置,默认启动端口是 8080 ,这里可以进行修改。

index.html 的内容很简单,主要是提供一个 div 给 vue 挂载。

main.js 中, 引入了 vue 、 App 和 router 模块, 创建了一个 Vue 对象,并把 App.vue 模板的内容挂载到 index.html 的 id 为 app 的 div 标签下, 并绑定了一个路由配置。

上面 main.js 把 App.vue 模板的内容,放置在了 index.html 的 div 标签下面。查看 App.vue 的内容我们看到,这个页面的内容由一个 logo 和一个待放置内容的 router-view , router-view 的内容将由 router 配置决定。

HelloWorld 中主要是一些 Vue 介绍显示内容。

所以,页面关系组成是 index.html 包含 App.vue,const router = new Router({App.vue 包含 HelloWorld.vue 。

到这,我们开始安装 router 、 vuex 。

Ctrl+C 退出启动,继续执行 vue-cli ,脚手架安装插件 router 和 vuex 开始。

输入一个大写Y,按下Enter

vuex 是专门为 Vue.js 设计的状态管理库,以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新。

Vuex 主要有五部分:

① 安装 vuex

接下来我们在 src目录 下创建一个 vuex 文件夹

并在 vuex文件夹 下创建一个 store.js 文件

文件夹目录 长得是这个样子

在保证我们处于我们项目下,在命令行输入下面命令,然后,安装 vuex 。

② vuex 的关系图

③ 开始使用,在 mian.js 中,引入 vuex

④然后告知 vue 开始使用 vuex (Vue.use(Vuex))

在 store.js 文件中,引入 vuex 并且使用 vuex ,这里注意我的变量名是大写 Vue 和 Vuex

⑤接下来,在main.js中引入store

到这里算是,以及完成了。

我们再重新看一下此时的项目结构,多了rout})er.js和store.js,其它相关的文件也被修改

vue后台返回菜单路劲前端怎么处理

const response = await axios.t("/login", {

1、首先设置前端反向,项目中根目录下env.dlopmen设置服务端访问路径,项目中根目录下data () {vue.config.js设置。

2、其次接口请求地址,项目中根目录下src/api/user.js添加相应接口。

3、请求头设置,后台接口请求需要前端每次请求时,在请求头中添加token、ip等相关数据,项目中根目录下src/utils/request.js,用户登录后,需要存储登录后,后端返回的等相关信息。

怎样实现Vue微信项目按需授权登录

// 进行过微信授权之后,重定向回来的中包含了微信的授权信息,可以将上截取的参数发送到,换取用户的token,随后进入上述有token时候的步骤

这次给大家带来怎样实现Vue微信项目按需授权登录,实现Vue微信项目按需授权登录的注意事项有哪些,下面就是实战案例,一起来看一下。

项目采用Vue作为开发框架,用户浏览页面时有两种情况:

一种是需要用户先登录之后才能继续浏览;

另一种是用户无需登录即可随意浏览。

在无需用户登录的页面中,可能包含需要用户信息的作,此时就需要用户登录之后方能进行后续作。因此,需要对授权登录策略进行区分。

思路

1.一般而言,我们为微信开发的H5页面,进入页面的时候就进行鉴权,要求用户登录之后才能继续浏览。但由于产品需求,这个项目我们需要对不同页面的鉴权策略进行划分,按照一般与特殊进行设计:

2.一般情况,用户进入页面时间要求用户授权登录,按照常规的微信授权登录流程,登录之后,用户继续浏览。

3.特殊情况,为无需用户登录的页面配置白名单,只要进入存在于白名单的路由,不进入检测用户登录状态的函数,直接渲染页面。

对于用户未登录状态下进行的需要用户信息的作,按照我目前的理解,即使是基于微信的静默授权,页面也必须重新刷新,无法做到真正无感授权并且继续用户的作。因此我选择在前端层面给用户更友好的提示,让用户了解授权过程,缺点是前一次作仅仅是触发授权登陆,授权登录后,用户需要再次进行作。

// routerRule.js

export default function routerRule (router, whiteList = []) {

// other codes...

router.beforeEach( (to, from, next ) => {

// 因为授权登录涉及异步作,因此使用promise,成功的回调中调用next函数

new Promise((resolve, rejects) => {

if ( whiteListRouter.indexOf(to.path) !== -1 )axios.interceptors.request.use( {

resolve()

return

}// 常规页面授权登录过程

if (hasToken()) {

// codes,获取用户信息并且跳转所需跳转的页面

} else {

// 判断用户是否已经进行微信授权

if (hasAuthed()) {

getWechatUserInfo().then(res => {

resolve()

} else {

// 用户尚未进行微信授权,则调用微信授权的方法,进行授权登录。

getWechatAuth()

}}

}).then( res => {

next()

router.afterEach(( to, from ) => {

wxShare({ title: desc: link: logo: })

}本项目是在用户初次进行微信绑定时,就将用户的微信信息与本站的用户信息进行的绑定,因此在获取用户微信授权信息后,就可以获取到用户的token,从而获取用户在本站的其他用户信息。

在无需登录页面的进行需要权限的作的处理

根据上面的逻辑,进入白名单之后,整个函数已经被return掉,不会进入下面的鉴权过程。但是如果是在此种页面上进行需要权限的作,那么就需要触发授权登录流程,并且在授权之后,要一并获取用户信息。

// checkLogin.js

export function checkLogin({ redirectUrl, wxAuthLoading, wxAuthLoaded, callback } = {}) {

if (getToken()) {

// ...

callback && callback()

} else {

// 提示用户正在授权中

wxAuthLoading && wxAuthLoading()

getWechatAuth( redirectUrl || window.location.href ).then( res => {

// 授权完毕,提示用户授权成功

wxAuthLoaded && wxAuthLoaded()

}}同时,我们需要对路由白名单添加一些作

// routerRule.js

export default function routerRule (router, whiteList = []) {

// other codes...

router.beforeEach( (to, from, next ) => {

// 因为授权登录涉及异步作,因此使用promise,成功的回调中调用next函数

new Promise((resolve, rejects) => {

if ( whiteListRouter.indexOf(to.path) !== -1 ) {

// 如果已经进行微信授权但是没有token值的,就调用以下函数获取token值

if ( !hasToken() && hasAuthed() ) {

getWechatUserInfo().then(res => {

resolve()

}resolve()

return

}// 常规页面授权登录过程

if (hasToken()) {

// codes,获取用户信息并且跳转所需跳转的页面

} else {

// 判断用户是否已经进行微信授权

if (hasAuthed()) {

getWechatUserInfo().then(res => {

resolve()

} else {

// 用户尚未进行微信授权,则调用微信授权的方法,进行授权登录。

getWechatAuth()

}}

}).then( res => {

next()

// other codes...

}坑点以及不完善的地方

1.这个方案在用户授权之后,在路由跳转之前,一定要先获取用户信息,否则在上的微信授权信息就会丢失,获取用户信息就会失败。

2.这个方案的缺点在于,需要开发者对在免登陆页面的所有需权限作都加上checkLogin判断。由于这种需权限的作一般都是发送异步请求,所以如果不考虑减少不必要的异步请求的情况下,可以统一在请求的方法上设置,判断后端返回的code,如果返回的是用户未登录的code,就进行微信授权。这种做法开发过程比较方便,但是会在用户未登录情况下发送了一些不必要的请求给后端,感觉不太好。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

阅读:

vue项目打包传送至

JS实现简单购物车功能代码分析

vue中实现浏览器全屏与退出全屏功能

```html