SSO单点登录
项目中的SSO单点登录的思路:
1、当用户输入用户名和密码之后,点击提交按钮,将数据传给web服务器;
2、Web服务器利用RPC方式访问SSO(登录)服务器,对用户传输的信息进行校验;
3、若校验通过,完成登录操作之后,生成令牌token,创建cookie对象,将信息保存到redis中,key使用UUID,将key存储到cookie中,value使用userJSON,设置超时时间(setex);
4、sso将服务器数据返回给web服务器(若账号密码有误,直接返回null);
5、Web服务器将数据的key(UUID)保存到cookie中,配置cookie的存活时间,数据共享的范围,将cookie数据保存到浏览器中,实现cookie共享(即认证登录一个系统后,其他信任的系统不需要登录),下次登录其他页面的时候,通过cookie中的值去查询redis中的value,得到账号密码去登录。
cookie.setDomain 设置cookie的共享范围。例如配置为jd.com,以jd.com结尾的域名下都可以实现cookie共享。
Cookie.setPath 设置cookie的访问路径范围,例如设置为 / ,/代表的是根路径
Cookie.setMaxAge 设置cookie存活时间,当设置为-1时,关闭会话时删除cookie;当设置为0时,立即删除cookie,值比0大时,设定存活时间。
SSO的退出操作:
当用户点击退出按钮时,向SSO系统发送一个”logout ”参数的请求(注销请求),拦截器拦截该请求,向sso认证中心发起注销请求;将cookie和redis中的数据删除,并且重定向到系统首页。
图片上传,格式校验
上传功能使用的是富文本编辑器,根据富文本编辑器中传递的URL参数,在控制层,业务层编写相关的代码,格式校验涉及文件,图片的格式,校验文件是否为恶意程序(如木马)等,格式校验可以采用正则表达式来校验,也可以采用集合的方式进行校验,项目中用到是集合的方式来进行校验,先创建一个空集合,然后在里面存储允许上传的相关格式,图片格式校验,校验是否有图片的特有属性,例如高度宽度等,动态生成文件存储目录,若目录不存在则创建,为了防止文件重名,可以用UUID自定义文件名称