1.1 什么是用户认证
用户身份认证,是要解决这样的问题:用户告诉系统“我是谁”,系统就问用户凭什么证明你就是“谁”呢?对于采用用户名、密码验证的系统,那么就是出示密码。当用户名和密码匹配,则证明当前用户是谁;对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。
静态密码
用户名对应的密码设置在系统,以设置后一般不再改变,安全性低容易被木马窃取,可以定期修改密码,但不容易记忆。
动态密码
现在最常见的短信密码就是动态密码的一种方式。每次都生成一个动态密码,安全性较高。
验证码
验证码不是用户认证的方式,只是通常在用户登录时使用验证码方式。
是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。
1.2 用户授权
给用户分配操作权限,用户认证通过后,操作指定权限的功能。
用户授权通过数据模型:
用户表、角色表、权限表(细化到操作链接)、用户角色关系表、角色权限关系表。
企业中在实现用户授权功能时,通常对上边通过数据模型进行修改。
权限表可以进行拆分:菜单表(模块表)、操作表(操作链接)
1.3 用户认证实现流程
密码认证方法。
第一步:用户访问系统
第二步:系统对用户访问资源校验,该用户是否通过认证
如果用户已经认证,放行,用户继续操作。
如果用户没有认证,如果访问的是公开资源地址(无需认证即可访问),系统就放行,用户继续操作
如果用户没有认证,如果访问的不是公开资源地址,拦截,跳转登陆页面
第三步:用户进入登陆页面
如果用户没有认证,如果访问的不是公开资源地址,拦截,跳转登陆页面
第四步:用户输入用户名、密码进行身份认证
如果认证通过进入系统首页
如果认证不通过进入登陆页面。
认证过程:根据用户账号和密码进行认证。
1.4 用户认证测试点
1.4.1 请求系统首先(非公开地址)
自动跳转到登陆页面。
用户登陆,拦截器放行。
1.4.2 在嵌入的页面中,session过期了,跳转到登陆页面
现象: 登陆页面是嵌入在页面中。
修改登陆提交的回调方法,
1.4.3 执行一个提交操,session过期,应该跳转登陆页面
LoginInterceptor拦截器作用,拦截了,返回了登陆页面。无法解析登陆页面内容。
在LoginInterceptor中,对需要跳转登陆页面,抛出指定异常在全局异常处理器中解析异常
并且跳转到登录页面。