web登录与授权
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登录与授权的更多相关文章
- ASP.NET MVC下判断用户登录和授权的方法
日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在asp. ...
- MVC下判断用户登录和授权状态方法
MVC下判断用户登录和授权状态方法 在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization ...
- ASP.NET MVC下判断用户登录和授权状态方法
在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在a ...
- 【转】Hadoop web页面的授权设定
转载自过往记忆(http://www.iteblog.com/)本文链接地址: <Hadoop web页面的授权设定>(http://www.iteblog.com/archives/98 ...
- 【转载】拒绝平庸——浅谈WEB登录页面设计
用户活跃度是检验产品成功与否的重要指标之一,传统行业的商家极为重视门面的装潢,因为一个好的门面可以聚集人气,招揽更多的顾客.古时候的大户人家院子门口的石狮子或其他的摆件的摆放极为讲究,有一定的风水学说 ...
- Web登录敲门砖之sql注入
声明:文本原创,转载请说明出处,若因本文而产生任何违法违纪行为将与本人无关.在百度.博客园.oschina.github .SegmentFault.上面都关于sql注入的文章和工具.看过很多sql注 ...
- C# httpclient获取cookies实现模拟web登录
目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...
- Web登录其实没那么简单
1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...
- 使用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运 ...
随机推荐
- cf701B Cells Not Under Attack
Vasya has the square chessboard of size n × n and m rooks. Initially the chessboard is empty. Vasya ...
- vs 2013调试的时候重启的解决方案
今天在用vs 2013 调试程序的时候,vs 总是莫名其妙的关闭,停止运行,泪蹦了..... 是什么原因呢? 以前的时候可是好好的啊,经过认真的思索,最近装过和vs 2013 相关的程序也只有 ref ...
- Java高级特性之枚举学习总结
在Java SE5之前,我们要使用枚举类型时,通常会使用static final 定义一组int常量来标识,代码如下 public static final int MAN = 0; public s ...
- fedorea19安装redis
Redis 安装: $ wget http://redis.googlecode.com/files/redis-2.4.5.tar.gz $ tar xzf redis-2.4.5.tar.gz $ ...
- web service1简单的例子用jdk自带的类
1,建立自己的java项目my_service 2,建立包,com.hjg.service 3,创建类: IMyService.java package com.hjg.service; import ...
- Data Guard 之 浅析Switchover与Failover
Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等.它通常都是无损的,即不会有数据丢失.其执行主要分为两 ...
- ssh远程连接不上ubuntu
问题描述: 1.ubuntu安装了openssh-server,启动了ssh 守护进程,使用端口22 2.在本机可以 ssh 127.0.0.1 连接 3.通过ssh远程(比如用putty 或crt) ...
- MaterialEditText
https://github.com/rengwuxian/MaterialEditText http://www.rengwuxian.com/post/materialedittext
- swift开发笔记24 解决键盘遮挡输入框 的方法
很简单,就是开始输入时把整个view的frame上移,也就是把y值减小就行了,至于减少多少自己调 ,也可以动态获取参见(http://blog.csdn.net/lengshengren/articl ...
- win7 无线网络无法启动
开始菜单-运行输入services.msc然后确定!找到WLAN Autoconfig这一项,启动此项服务,一切就OK了