Spring Boot入门(第十八章):安全验证框架介绍

1、Shiro和Security介绍

Java安全验证框架主流的就两个,一个是Shiro,一个是Spring Security,两者核心功能基本类似,Shiro的特点是上手简单,可以独立运行,而Security则上手较难,功能强大,Shiro提供的功能可以说只是Security的一小部分,依赖于Spring。

笔者大部分时间都是使用的Shiro,基本上Shiro已经能达到我所有的要求,权限后台可以控制到方法级别,前端可以控制到按钮级别。直到后来做微服务,发现Spring全家桶里面的东西实在是太多都是默认用的Security,终于妥协,开始用Security,刚开始用Security,确实花了点精力,但随着深入,发现Security是真的强大,各种场景都提供了标准实现,如oauth,sso等等,而以往使用Shiro都需要自己加些东西,当然也不是很复杂。

对于新手,笔者的建议是使用Shiro,而对于有经验的开发人员来说,笔者建议使用Security,毕竟我们基本上都是用的Spring全家桶。在这个系列教程中,笔者采用Security,以后看情形再决定是否补充Shiro的相关内容。

2、认证与授权

在这里认证我们指的是用户提供用户名和密码后,我们验证这两者的正确性,判断这个用户存不存在,密码正确与否。而授权指的是,这个用户在我们系统里面具有哪些权限,如是不是可以添加文章,编辑文章,删除文章等等。

3、会话Session

用户每次使用我们的网站,当刚进入我们网站的时候,我们会给他创建一个session,然后一直在用户离开网站,session销毁。每个用户对应一个session,session一般存储了用户的一些个人信息,如用户id,用户名等等,session是存在服务器端的,如果服务器端没有这些信息,就不知道,到底是哪个用户访问了我们的系统,我到底该给什么样的权限给他。

session有个缺点,因为他是存储在服务器端的,存储的容量一般是有限。如果应用使用集群,session就不能使用本地内存,一般我们有三种解决方案,最常用的是使用session服务器,如redis缓存来存储session;一种是使用session粘贴,使用代理服务器的特性,让同一个ip始终访问同一台服务器,这种方式,如果一台机器挂了,会导致部分业务无法正常处理;最后一种是session复制,让web容器之间相互同步session,这种方式效率低,也占内存。

4、token

为了解决session的缺点,我们还一种无状态的服务,无状态的服务在服务器端并不存储用户状态,用户登录成功后,服务器端会返回一个token给你,这个token使用特定的加密算法生成,现在有一个标准叫JWT,一般我们可以按照这个标准做,但并不是必须的。每次请求都必须带着这个token,服务器端接收到请求的时候,会解析token,从中获取用户id或者用户名,这样就可以对用户进行授权。

token的优点是,服务器端不存储用户信息,所以无论多少用户使用,对系统都无影响。缺点是用户无法主动剔除,例如,以前使用session,如果要剔除用户,我们只需在服务器端删除对应的session即可,而使用token,就无法做到,只能等token自动过期。还有,如果我们系统将token存储在浏览器cookie或者localStorge里面,存在被其他用户盗取冒用身份的可能。

在这个系列教程里面,我们将视情况而定。

5、总结

这章简单的介绍了安全验证框架里面的几个概念,和一些策略的对比,总体来说,不管是Shiro,还是Security,不管是session模式,还是token模式,使用哪种都是没问题的,我们可以根据具体的应用场景选择对应的方案,这样能减少我们的一些工作。

代码:

https://github.com/www15119258/springboot-study/tree/branch18

这节并没有新的代码,为了保证分支的连贯性,我还是拉了一个分支出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容