文档章节

说说登录流程里发生的事情

熊猫88
 熊猫88
发布于 2015/12/08 12:16
字数 1103
阅读 189
收藏 2

     登录流程作为所有系统里最经典的功能之一,表面上看也是非常简单的一件事。你可以写的很简单,只要username和password匹配下,不符合,就告诉前端匹配失败,此次登录失败,反之成功。
   这里以解析OT的后台管理登录流程,来分解整个登录过程,其实登录过程中的N多权限判断是非常不简单的(实际上很多系统也是如此,表面上看简单的流程,简单的功能,而背后有着很复杂的逻辑)
   1.登录的前端(输入帐号和密码),post提交后,检测到有post提交,进入实例化对象。
            $User = new UserApi;
            $uid = $User->login($username, $password);
   用这种调用外部UserApi的方法,有俩个好处非常明显,可以直接调用外部的权限验证(整合的时候非常方便,实际上此处设计也是如此用意)。用户登录可以从本地的数据库进行验证,也可以从外部的调用数据进行验证。本地有许多其他的复杂验证逻辑,封装到了该对象的内部方法里面。
   2.登录可以选择多种方式进行登录(比如有的网站可以邮箱登录,也可以手机登录)
     登录的时候,需要对密码进行反向解密运算(帝国里运算是比较复杂的,用的是三重md5+盐的方式),一般常用的是md5(substr(md5($test),0,13).$salt)这种属于加密比较高的 因为盐是随机的,在不知道盐的情况下,就算知道是md5加密,也是无法进行密码破解。(弱密码加密很容易通过md5速查表反查到)
   3.验证成功后,一般需要记录用户名的行为操作(登录成功的时候,需要记录)
   $this->updateLogin($user['id']);  $this->save($data);   
   对每次登录  做一个uid的最近登录时间刷新
   4.登录成功后,会返回一个uid(这个uid是用户会员中心的uid  对接外部或者ucenter_member)  
      $Member->login($uid)  
      在UC中心user中心登录检测到了后,同时在member表里留一份做备份,进行验证。检测其是否是有效的用户  字段status检测
   5.记录用户的登录行为(每个用户重要的操作,比如登录,改写字段这种一般需要存一份作为备份)
      action_log('user_login', 'member', $uid, $uid);
    6.同样更新其在member本身表里的登录时间,还有写session 等操作行为。
    返回,确认登录成功,成功后,跳转到指定登录界面
     $this->success('登录成功!', U('Index/index'));
     这里封装了一个跳转方法。
        整个登录流程,可以简化成一个非常经典的笔试题目,让你写个登录流程,你会想到哪些操作。一开始笔试这个题目的时候,我直接想的以为就是username和password进行对比,就可以完成目标。而在实际应用场景里,登录需要注意的东西远远比这个对比复杂。
    主要涉及到的一些知识点包括:
    验证码(验证码的验证基本是必不可少的),登录条件检测(比如限定登录ip,频繁试错检测),登录后密码的运算对比(这个是防止拿到了数据库,直接入侵的情况)登录访问权限(一般后台登录的时候,需要检测对应会员的权限)登录后行为状态的更新(一般更新最新登录状态,基本的会包括登录ip,登录时间,登录次数)登陆后session的记录(可以cookie方式,设定失效时间,一般登录都有个失效时间)登录的行为记录(一般作为系统管理员查看的时候使用,查看异常登录非常有用)登录后的页面跳转(登录成功的跳转页面和登录失败后的跳转页面)

© 著作权归作者所有

熊猫88
粉丝 18
博文 76
码字总数 65366
作品 0
程序员
私信 提问
NO.120 不懂语言代码,超级菜鸟的建站分享(三):第三方登录设置。

上两篇详细的介绍了我使用蝉知免费CMS搭建个人站:先知厨房站的建站流程和界面设置。 不懂语言代码,超级菜鸟的建站分享(二):界面设置 不懂语言代码,超级菜鸟的建站分享(一):建站流程...

炒蚕豆吃蹦豆
2014/03/03
115
0
python-38: 网页登陆流程

在开始之前,先跟大家说一个挺有趣的事情,我在网上查资料的时候,无意中搜索到一个视频,视频的老师在开头讲了一段蛮有意思的话,他说,有好多的同学跟我反映说认真学习了基础教程,认真看了...

达岭凹老大
2015/12/01
157
0
关于django一个请求的生命周期

作为一个python新手,django可能是作为python开发第一个接触的web框架了,今天来说说django的生命周期。 第一步:浏览器输入网址。接下来你以为就到django的urls了?No,紧接着是要经过djang...

syklinux
2018/06/26
0
0
老板让我十分钟上手nx-admin

大体流程 参考资料: nx-admin项目地址 首先这里就不讲解vue和vuex之类的基础东西了 有兴趣的可以去官方文档了解。这里根据流程走向大概说说 路由配置 首先找到路由配置,路由配置放在了路由配...

mgbq
2018/07/10
46
3
jasig CAS登录验证分析

jasig CAS登录验证分析: 之前文章讲到了怎么利用jasig CAS实现sso: http://my.oschina.net/indestiny/blog/200768 本文对jasig CAS验证过程做个简单的分析,便于以后能够更好定制自己的CAS...

ihaolin
2014/02/23
3.5K
9

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
34分钟前
51
4
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部