小结一下,登录如何判断不同标签页登录两个账号的问题

今天无意中作出了,检测两个标签页登录两个账号的方法;

是这样的,这个项目,如果多账号登录的话,会出现一些古怪的现象,两个账号的个人信息不一样,支付订单信息却是一样的,同步的,这很可怕,

出现这样的原因是,代码不够规范,后端有用session来判断是不是同一个人的,也有的接口是根据userid来获取信息的,我将一些项目的配置信息存在了vuex中,并将vuex中的state值在刷新前都会在localStorage中存一份,放置刷新页面后vuex中的值丢失。(这个是一个小突破,但不是今天的重点)。

问了解决在两个标签页中登录两个账号,信息错乱的问题,我想了个比较直接的方法。

1、先说登录是怎么做的,刚开始为了限制登录两个账号,后端写了两个方法,退出登录的方法,和检测是否登录的方法,当进入项目首页时检测是否登录,若登录过,就跳到内容页,如果没有登录,则加载首页内容,登录的时候,我会设置userid和username和loginstatus在vuex中存一份,在localStorage中存一份。

2、当在一个页面登录时,很简单,通过后端的接口就可以判断出是否有账号登录,以为后端用的是后台session判断的,如果登录过就提示,退出当前账号才能登录。

3、如果在一个标签页登录过后,在用网址打开先标签页,如果登录,会让直接到内容页,如果没登录,会在首页停着

4、有一个骚操作是,单开一个标签页登录,再用连接打开标签页,之后项目会跳到内容页,此时不操作第一个标签页(登录过账号的),将第二个标签页中的账号退出,然后重新登录个不一样的账号,此时就出现了,信息错乱的问题,为了避免这样的问题,就简单的办法就是只能让一个浏览器登录一个账号。

5、那么当一个新的账号登录后,老的标签页如何知道有新账号登录了呢?于是就调试,找不同。

6、我猜测,信息错乱可定是有些接口是用session来判断用户的唯一标识的,有些接口是用userid来判断用户的唯一标识的,session我下不了手,只能从userid下手,我发现,刚登录的新账号vuex中的userid和localStorage中的userid是一样的,因为刚登录,是同时设置的,但是老标签页中的vuex中的userid还是自己账号的userid但是localStorage中的userid却被新账号的userid覆盖了,此时老标签页中的localStorage中的userid和vuex中的userid已经不一样了,这不是有差别了嘛,于是就在axios的响应拦截器汇总判断vuex中的userid和localStorage中的userid是否一样(前提是两个都存在),如果一样表示是最新登录的账号,不做任何操作,如果不一样,只有在老标签页中会出现的情况,那么此时就不能让客户对老标签页的内容进行改动,否则会出大问题。于是就在响应回调里判断如果两者不一样则,关闭标签页,这样就很好的避免客户出错了。

7、解决问题的过程中遇到不少问题,后端要使用同一的东西去识别唯一标识,要不会遇到向我遇到的麻烦事,另外,在edge浏览器上,localStorage每个标签页时独立的,如果不同步,我的这种方法就出错了,就会出现量标签也的信息错乱问题,网上一个解决办法是,个window加个storage监听事件,什么都不用做,在edge中两个标签页之间的localStorage就同步了,在edge找那个就不会出问题了。

原文地址:https://www.cnblogs.com/fqh123/p/12375324.html

时间: 2024-08-29 18:16:16

小结一下,登录如何判断不同标签页登录两个账号的问题的相关文章

【Android】标签页、计时器、单选按钮、复选按钮

写一个小程序把安卓程序中的几个基础组件的基本用法串联起来. 如下图所示: 在安卓程序中,一个计时器,一直在不断地计时,每10秒弹出一个提示. MainActivity被一个标签页分成两部分,一部分,有单选按钮与复选按钮,最后有一个提交按钮, 结果在另一个标签页中显示. 用这个程序来说明安卓中标签页.计时器.单选按钮.复选按钮的用法. 首先贴上res\values\string.xml中,各个组件的字符串. <?xml version="1.0" encoding="ut

判断标签页显示隐藏(visibilitychange事件)

简单的说,浏览器标签页被隐藏或显示的时候会触发visibilitychange事件. 这个事件可以满足一些用户需求,比如标签页隐藏的时候停止播放音乐视频.停止一些不必要的轮询,还有停止一些诸如轮播等循环动画效果等等.这些可以节省服务器和本地的开销. 这个事件已经得到现代浏览器广泛的支持,不过一些老版本的浏览器需要加相应的前缀. Chrome (Webkit) Firefox (Gecko) Internet Explorer Opera Safari (WebKit) 13前缀webkit33无

WordPress页面,文章,分类等的条件判断的标签集合

is_home()判断是否为首页. The Front Page 首页头版消息设置is_front_page()判断是否为首页头版消息. (无论是日志或是页面).当系统显示博客主页且管理面板的设置>阅读菜单下 “主页显示为”选项设 为最近发表的文章”,或者’设置>阅读菜单下”主页显示为”选项设为且”主页”是当前被显示的页面时,is_front_page() 标签返回 TRUE. The Administration Panels 管理控制面板is_admin()判断是否为后台管理控制面板. A

20141112 WinForm子窗口标签页

(一)标签页 先看看效果: 代码: 1 public partial class 标签页 : Form 2 { 3 string s = ""; 4 public 标签页() 5 { 6 InitializeComponent(); 7 } 8 /// <summary> 9 /// 判断选项卡中是否有本选项卡 10 /// </summary> 11 /// <param name="s">选项卡名</param>

【JavaScript】原生态的兼容IE6的标签页

标签页是一个很常见的东西,在一些框架中也就很常见的, 但未必所有人都知道怎么写,很多人知道怎么在网上复制一份是真的, 这样不好,往往需要用大量的时间去修改网上复制下来的东西,还不如自己写一份快. 一.基本目标 创建一个如下的标签页,在IE8中与谷歌浏览器中的效果如下,几乎没有区别 谷歌浏览器: IE8: 二.制作过程 1.首先布置好场景,在一个图层内: 图层1~图层4四个超级链接是一个图层,然后各自的图层的内容分别是各自的图层,默认是图层1的内容显示,而图层2~4则默认不显示 <html> &

elementUI中Tabs标签页的使用

一.系统公告这栏是直接引入系统消息这个页面的,现在需要在系统公告这栏加入一个返回按钮,但是又不能直接在人家的系统消息页面上加,如何实现?? 解决:利用Tabs标签页提供的@tab-click事件. 首先直接在个人中心这个页面上加入按钮标签,但是给它一个v-if属性,当其为true时就显示按钮,false就不显示. 二.跳转到指定的标签 需求:从页面A跳到该页面时指向配置管理这栏.其他页面跳到此还是默认为用户管理这栏. 解决:从页面A跳过来时可以带一个参数,用于该页面做条件判断. 第一步:在A页面

java简单博客系统(二)导航标签页点击后页面内容改变及背景色改变

一.同一个Servlet处理多个请求,显示不同的页面内容 导航标签页 bootStrap模板: <ul class="nav nav-tabs"> <li role="presentation" class="active"><a href="#">Home</a></li> <li role="presentation"><a

JS 监听浏览器标签页显示隐藏

JS 监听浏览器标签页显示隐藏 API document.hidden 判断页面是否隐藏的布尔值.页面隐藏包括 页面在后台标签页中 或者 浏览器最小化 document.visibilityState (只读属性), 返回document的可见性,4个值: hidden:文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 '锁屏状态' visible:此页面在前景标签页中,并且窗口没有最小化 prerender:页面在屏幕外执行预渲染处理 document.hidden 的值为 tru

22.Android 十分方便的滑动标签页

22.Android 十分方便的滑动标签页 Android 十分方便的滑动标签页 前言 EasySlidingTabs属性 EasySlidingTabs布局 FragmentPagerAdapter EasySlidingTabs设置Tab背景 Github传送门 效果图 前言 其实滑动标签页是很常见的,网上搜也是一大堆.但是好用.简单.少bug.可扩展的库实在不多.很多想在做滑动标签页的时候也是经常想到各种不靠谱的库,虽然不难,但是容易坑自己. 原三星底层App大神JiangEcho提供技术