7

以'权限系统'开篇不晓得会不会遭到鄙视

 3 years ago
source link: https://www.cnblogs.com/kdaddy/p/14635365.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

距离上一篇博客《关于技术人员自身能力提高的一些思考》已经相隔将近一个月,现在才去更新博文,一方面工作上面确实有点忙,另外一方面自己也可能真的最近有所松懈。老猫也就不去找说辞了。

上次发布博文之后,网友反响其实还是挺大的,每个人都有自己的看法。大概是这样的,老猫截取了其中一些网友的留言。
留言1

留言1

其实从上面的留言里面可以看到两种意见,第一种,赞成学习研究技术,主要目的作为知识储备。一旦用到,重新翻看学习的成本会比较低,即使忘记了。第二种,赞成通过实际的开源项目去实践相关的技术,这样才会更加深刻。

后来老猫想了想还是决定综合以上两种意见,首先业余时间做个开源的项目出来,另外的话同时也把里面的相关的技术点也细扣一下,然后分享给大家。

为什么是权限系统?

思来想去不晓得以什么样的开源系统作为切入会比较好,作为一个后端程序员,我们接触最多的就是我们的后端系统,当然最基础的话还是权限系统。当然这是老猫选择权限系统的第一个原因。

基础的权限系统完成之后,其实也可以在此之上拓展一些其他的业务出来,其实老猫也同时在预谋另外一个产品,在此先卖个关子,老猫后续会公开,所以欢迎大家持续关注老猫。这是第二个原因。

将近毕业季,相信很多软件学院的学生党还在苦苦纠结于做个怎样的毕业设计。所以在此,老猫也希望能给大家一些思路,或者说给一个比较简单而又拓展性比较强的模板,大家可以拿去自行拓展自己的想法,代码整体的学习成本并不是很高。这是其三。

老猫是后端程序员,对于前端只能说会用,并不精通,更不用说自己去开发出漂亮的前端页面,但是后端系统的vue相关的系统页面有很多现成的开源代码,用来做系统都非常漂亮,可以直接拿来做系统,当然最简单就是权限系统了,这是其四。

这就是以上四点老猫决定总权限系统入手的原因。

决定选择什么样的技术栈?

所有的系统都是从单体架构开始的,由于业务比较简单,所以老猫刚开始的时候先不考虑微服务,后面老猫在进行需求扩展的时候再去做相关的微服务改造。但是老猫这次的权限系统还是做成前后端分离的模式,主要思路就是shiro+jwt+vue去实现相关的登录权限功能。

关于企业级的登录以及权限验证的话市面上有比较成熟的开源框架,一般会有这两个,分别是spring security以及shiro。

聊聊两大安全框架,以及最终选型

聊聊两者的共同功能,两者都具有:

(1)认证功能(2)授权功能(3)加密功能(4)会话管理(5)缓存支持 (6)rememberMe功能。

看看不同点:

1、Spring Security 基于Spring 开发,依赖spring容器,项目若使用 Spring 作为基础,配合 Spring Security 做权限更加方便。Shiro 依赖性低,不需要任何框架和容器,可以独立运行,所以这就导致 Shiro 需要和 Spring 进行整合开发;

2、Spring Security 功能比 Shiro 更加丰富些(据说控制粒度可以更细),另外的Spring Security对Oauth、OpenID有支持,然而shiro需要手动去实现 ;

3、Spring Security 社区资源相对比 Shiro 更加丰富;Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。而且Spring Security的权限细粒度更高,spring security 接口 RequestMatcher 用于匹配路径,对路径做特殊的请求,类似于shiro的抽象类 PathMatchingFilter,但是 RequestMatcher 作用粒度更细

4、Shiro 简单,易用,功能也强大,Spring Security 上手复杂些;

5、shiro 不仅仅可以使用在web中,还支持非web项目它可以工作在任何应用环境中。在集群会话时Shiro最重要的一个好处或许就是它的会话是独立于容器的。

综上,虽然spring security看起来比shrio更加强大,另外还有shiro所不具备的对Oauth、OpenID的支持,但是这些都不是关键。谈到权限的控制粒度,shiro完全可以通过数据库的查询层面去做掉。关于Oauth以及OpenID支持。由于是web应用,所以现租户与各个产品间单点登录已经通过cookies实现。另外的最大的原因的话主要还是shiro相对而言更加容易上手一些。不得不提一嘴的是 SpringSide网站的权限也是用Shrio做的。

所以结论就很明显了,老猫还是决定用shiro去做权限认证。

勿以善小而不为,复杂的业务系统总是从最简单的系统开始。基础的技术千篇一律,有趣的系统演化百里挑一。所以与其死啃干货,不如从系统真实去实战,just do it !,just do it ! 所以接下来开始,希望大家就和老猫共同开启开源之旅了。在开源中成长,在开源中去结合实际场景学习一些新的知识。flow me!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK