web开发已经流行了很多年,登录与授权也基本有一套通用的流程,下面是我自己常用的登录与授权方式,欢迎大家讨论与吐槽.

概念:
  登录是过程,授权是结果.登录只是为了获得页面的访问权限 or 操作权限 or 数据权限 or api调用权限.

登录授权分为两个域:用户域和权限域.

  用户域:用户信息,角色信息。
    用户信息:登录帐号,登录密码,用户名,角色,机构,部门等。
    角色信息:角色名,机构,部门等。

  权限域:模块信息,权限信息,角色权限。
    模块信息:应用中的一个功能块,可以是一个页面(api),也可以是多个页面(api),拥有唯一标识。
    权限信息:模块里的功能单元,比如增、删、改、查等。
    角色权限:保存角色拥有的权限信息。

登录:
  登录通常是用户输入账号、密码、验证码然后提交表单进行身份校验然后保存授权信息,现在还有扫码登录。
  保存授权信息:
  Cookie:把用户信息加密后保存在Cookie中。
  Session:登录成功后在Cookie里保存SessionId和用户标识。
  对比:
    Cookie:
      优点:不占服务器资源(Cpu资源除外,因为如果信息量大,解密过程很耗资源),使用方便。
      缺点:容量有限且不安全。

  Session:目前流行的是使用缓存数据库来充当Session服务,例如Redis和Memcache.
    优点:
      1、容量可根据需求无限拓展,可以很方便的建立独立的登录授权中心。
      2、相较于Cookie,数据非常安全,SessionId是随机和易变的,只有SessionId对应的session信息和用户标识全匹配才算成功。
      3、可以很方便拓展成独立的登录中心以实现统一登录。

    缺点:过程稍微复杂。

授权:
  授权发生在功能模块的入口处,流程如下。
  1、获取用户的登录信息(from Cookie or Session)。
  2、通过模块模块唯一标识和用户角色信息获取当前用户在当前模块的权限。
  3、把用户当前模块的权限信息写入上下文(HttpContext)中(避免一个请求多次读取权限信息,后面的操作就可以直接从上下文中获取)

web登录与授权的更多相关文章

  1. ASP.NET MVC下判断用户登录和授权的方法

    日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在asp. ...

  2. MVC下判断用户登录和授权状态方法

    MVC下判断用户登录和授权状态方法 在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization ...

  3. ASP.NET MVC下判断用户登录和授权状态方法

    在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在a ...

  4. 【转】Hadoop web页面的授权设定

    转载自过往记忆(http://www.iteblog.com/)本文链接地址: <Hadoop web页面的授权设定>(http://www.iteblog.com/archives/98 ...

  5. 【转载】拒绝平庸——浅谈WEB登录页面设计

    用户活跃度是检验产品成功与否的重要指标之一,传统行业的商家极为重视门面的装潢,因为一个好的门面可以聚集人气,招揽更多的顾客.古时候的大户人家院子门口的石狮子或其他的摆件的摆放极为讲究,有一定的风水学说 ...

  6. Web登录敲门砖之sql注入

    声明:文本原创,转载请说明出处,若因本文而产生任何违法违纪行为将与本人无关.在百度.博客园.oschina.github .SegmentFault.上面都关于sql注入的文章和工具.看过很多sql注 ...

  7. C# httpclient获取cookies实现模拟web登录

    目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...

  8. Web登录其实没那么简单

    1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...

  9. 使用spring security 2.0 和extjs 3.0实现web登录

    使用spring security 2.0 和extjs 3.0实现web登录 1开发环境说明 本例使用MyEclipse 6.5作为开发工具,jdk1.5作为编译工具,tomcat6.0作为web运 ...

随机推荐

  1. oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)

    1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合 ...

  2. Sublime一些设置

    很喜欢sublime text 2 总是在新窗口中打开文件,很麻烦,文件打多了,就会出现N多窗口,虽然可以直接打开当前目录可以解决,但有时候查看其它项目中的单个文件,就比较麻烦.百度一直在搜索,无果. ...

  3. 在Visual Studio中使用AStyle

    最近在做一个C++项目,我们使用了一个叫做AStyle的插件来做代码格式化. 下载方式1:通过Visual Studio下载 启动Visual Studio,以下简称VS: 英文版VS:VS主菜单 & ...

  4. Oracle function注释

    create or replace function fn_bookid_get_by_chapterid(inintChapterId in integer, outvarBookId out va ...

  5. 再探java基础——零碎基础知识整理

    1.java是解释型语言.java虚拟机能实现一次编译多次运行. 2.JDK(java software Development kit 软件开发包),JRE(java Runtime Environ ...

  6. [AngularJS] ngPluralize

    ngPluralize is a directive that displays messages according to en-US localization rules. <script& ...

  7. 【剑指offer】和为定值的连续正数序列

    .可是他并不满足于此,他在想到底有多少种连续的正数序列的和为100(至少包含两个数).没多久,他就得到还有一组连续正数和为100的序列:18,19,20,21,22.如今把问题交给你,你能不能也非常快 ...

  8. 基于 Java 2 运行时安全模型的线程协作--转

    在 Java 2 之前的版本,运行时的安全模型使用非常严格受限的沙箱模型(Sandbox).读者应该熟悉,Java 不受信的 Applet 代码就是基于这个严格受限的沙箱模型来提供运行时的安全检查.沙 ...

  9. git clone之后自动checkout文件处理

    这个问题发生是因为不同操作系统的行结束符不一致导致的,可在clone之后在仓库根目录修改.gitattributes文件 简单处理的话,注释* text=auto这行即可.也可根据不同系统,做相应设定 ...

  10. Ambari安装

    给hadoop用户sudo权限 hadoop ALL=(ALL) NOPASSWD:ALL 建立SSH互信,参考Hadoop HA的搭建中的互信建立 建立相应的下载脚本down.sh nohup wg ...