一 前言

关于用户登陆,注册,页面跳转,我讲了很多,都是页面框架级别的。有人问到这个问题,索性总结一下,今天是收尾最后一篇。

以往初学时的设计是:

1 注册

2 登陆

3 进入页面。

这种很简单,没有id就进不了主页面。

但是实际上,除了通讯类的软件,一般软件不是先进入登陆页面,而是先进入主页,当操作某个功能时,再提示登陆。或者登陆后,在某个时刻更换帐号,重新进入登陆页面。

像这种后来进入登陆页后,用户登陆成功后如何保证再回到web时,各个页面的用户id唯一性呢??

用户id更换,web中的每一个页面必须同时更换。

也就是说,每个页面的首要任务是:随时接收用户id,并判断用户id是否更改,如有更换,则即时更新用户信息和权限。

登陆页作为一个任意页面的公共目标页面,如何跳转到来源页面并正确传参呢?

带着这些问题,我们完成页面框架的收尾工作。

二 效果演示:

1 进入主页后登陆

2  更换帐号

如果用户已经登陆,则弹出更换帐号对话框

用户更换成功,头像和号码同步进行了更新

三  设计思路:

页面同步,modeload可以不要,它只能初始化页面,刷新一次data.但是modelParamsReceive异常重要,在页面加载之前,监听参数状态,并进行参数接收,触发data刷新。这个我在页面同步的博文中简单提过,现在深入一下。

四  页面逻辑与代码实现

1 监听参数并接参,所有页面都作如此处理,来保证用户id是否更换,如有更接,即时过滤并得到当前行。data自动加载关闭掉,设置过滤条件后,接管刷新事件,效能问题影响不大。setFilter里的语句为ksql拼接写法,其实是通过XHR的双向联接,用sql语句过滤数据库,这就是说,每一个页面,都用这种方法,保证用户id一致性,效能不会有太大影响。

2 帐号更换

登陆与帐号的显示切换,很简单,一个三目表达式

未登陆与登陆后的头像更换,同上

提示帐号更换的窗口弹出,用innerHTML得到span元素的值来判断

justep.shell.showPage页面跳转并传参,比以往多了一个from,这是一个键,我的定义是,哪个页面跳转到登陆页,给它一个来源,登陆页根据from,登陆成功后再回到

mine页面。如果是其它页面,则跳转到其它页面。不能每次登陆后去一个页面,就要这么来设置。

3 登陆页面

参数接收,不看不知道,一看,多了这么多判断。登陆页作为一个公共页面,哪个页面都能传参回来,不能直接刷新data,根据来源页面的this.params.from的值,得到来源是哪个页面,才能决定,如何动作。

登陆成功后,跳转到来源页面。这里用变量,呵呵,这么写还真行。

每个页面都要接参并传参,作为用户id一致性的必要判断。

4 所有页面接参,再次重申

5 用户id在传参判断中居首要地位。比如下图中,一个页面,左右两个页面都对它传参,这个页面就要首先判断用户id,然后根据来源执行不同的动作。

没想到,后期登陆,带了如此复杂的传参问题。

我发现,有的同学中modeload里强制刷data,还有的是在modelactive时接参,这都是不对的。

经过反复测试,我抛弃了window.xxxx的全局变量,而是使用了逻辑复杂的传参与接参。原因是window.xxxx变量虽然可以全局,但是需要手动得到,不能触发类似于modelParamsReceive那种类似于监听器的事件来触发data刷新。以前探讨过的全局可观察变量,反复测试,在不同的页面跳转过程中,不能向上级页面传递可观察属性。

比如,mine页面已经打开过,再跳转回来就不行了。

跟那个modeload一样,只能初始化一次页面。除非你关掉web重新打开。

五  总结:

1 modelParamReceive,是一个实时的监控事件,无论页面是否打开过,都可以接参

2 modelParamReceive看似代码复杂,实际简单,可以实现更复杂的页面控制

3 传参,不仅仅是页面跳转,在多级页面中,还起到中间页面,控制简单流程的作用。

wex5 实战 登陆帐号更换与用户id一致性的更多相关文章

  1. 操作失败,没有该服务权限![ 机构号:99 ,用户ID:50000009 ,服务号:0101030112 ]

    操作失败,没有该服务权限![ 机构号:99 ,用户ID:50000009 ,服务号:0101030112 ] 此时我们可以把代码 SERVICE_NO 改成 10个0 即 0000000000 ,就可 ...

  2. OpenERP7.0中非admin帐号新增其它用户问题

    在OpenERP7.0中,通过admin新增了一个管理员帐号,然后登录管理员帐号,再新增其它用户时提示错误,系统提示对users没有create权限. 经测试了解,是因为安装了多公司模块后,在记录规则 ...

  3. 公众帐号如何向用户发送emoji表情(php版,附emoji编码表)

    //字节转Emoji表情 function bytes_to_emoji($cp) { if ($cp > 0x10000){ # 4 bytes return chr(0xF0 | (($cp ...

  4. asp.net如何更改默认的登陆帐号/密码:16aspx/16aspx

    修改数据库,在DB_16aspx文件夹下面 sql server 2005+的数据库打开.

  5. Windows Vista for Developers——第四部分:用户帐号控制(User Account Control,UAC)

    作者:Kenny Kerr 翻译:Dflying Chen 原文:http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-f ...

  6. ubuntu用户帐号

    与用户帐号相关的有几个非常重要的文件/ect/passwd,/etc/shadow,/etc/group /etc/passwd 执行 head -n 5 /ect/passwd显示前5行,内容如下: ...

  7. SQL SERVER孤立帐号的处理

    Step1:查询 Use KSHR_F23 Go exec sp_change_users_login @Action='Report' Go Step2:处理 Use KSHR_F23 Go exe ...

  8. 鸟哥的linux私房菜——第十三章学习(Linux 帐号管理与 ACLL 权限设置)

    第十三章.Linux 帐号管理与 ACLL 权限设置 1.0).使用者识别码: UID 与 GID UID :User ID GID :group ID [root@study ~]# ll -d / ...

  9. [033] 微信公众帐号开发教程第9篇-QQ表情的发送与接收(转)

    我想大家对QQ表情一定不会陌生,一个个小头像极大丰富了聊天的乐趣,使得聊天不再是简单的文字叙述,还能够配上喜.怒.哀.乐等表达人物心情的小图片.本文重点要介绍的内容就是怎样在微信公众平台使用QQ表情, ...

随机推荐

  1. 一个人java深入理解java logback配置

    http://blog.csdn.net/initphp/article/category/1230072/2

  2. MyEclipse 点击 部署 按钮 无效

    找到MyEclipse的工作路径,我的是"D:\Workspace",到这个目录中去"\.metadata\.plugins\org.eclipse.core.runti ...

  3. Python中的对象类型的初步介绍

    一:介绍 1.为什么使用内置对象 对象类型是语言的一个部分 内置对象构成了每个python程序的核心部分 2.核心数据类型 数字 字符串 列表 字典 元组 文件 集合 其他类型 编程单元类型 与实现相 ...

  4. GC

    垃圾回收机制的优点:释放无用的对象所占用的空间.方式:自动回收.手动回收.使用System.gc实际上是调用Runtime.getRuntime().gc()

  5. Linux系统下Nginx安装详解

    该随笔为个人原创,后期会根据项目实践实时更新,如若转载,请注明出处,方便大家获得最新博文! 注:安装Nginx需要Linux系统已经安装   openssl-fips-2.0.2.tar.gz zli ...

  6. 【vue.js权威指南】读书笔记(第一章)

    最近在读新书<vue.js权威指南>,一边读,一边把笔记整理下来,方便自己以后温故知新,也希望能把自己的读书心得分享给大家. [第1章:遇见vue.js] vue.js是什么? vue.j ...

  7. uploadify使用教程

    <div> <input type="file" id="uploadify" name="uploadify" /> ...

  8. Win8电脑蓝屏并提示dpc_watchdog_violation

    用尽系统自带的工具均无法恢复,F8能进系统.后来使用如下方法解决了 这种错误情况的发生可能是由于 iastor.sys 驱动没有完全兼容 Windows 8系统所造成的. 微软正在研究一种可行方案,来 ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

  10. BI好比做菜

    近日,珠海奥威软件宣布成功签约新世界中国地产(华南),成为该公司在商业智能项目上的坚实合作伙伴,共同打造基于以财务应用为主的决策分析平台. 公司简介 新世界中国地产(港股代号:917)为香港上市公司新 ...