KittyDaddy's blog KittyDaddy's blog
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

老猫

万物皆系统
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 面试记

  • 杂文

  • 开源

    • 以'权限系统'开篇不晓得会不会遭到鄙视
      • whale系统实战,聊聊用户认证
      • 承诺兑现,完成一个权限系统开源
    • 友情链接
    • 更多
    • 开源
    老猫
    2021-04-08
    目录

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

    # 前言

    距离上一篇博客《关于技术人员自身能力提高的一些思考》已经相隔将近一个月,现在才去更新博文,一方面工作上面确实有点忙,另外一方面自己也可能真的最近有所松懈。老猫也就不去找说辞了。 上次发布博文之后,网友反响其实还是挺大的,每个人都有自己的看法。大概是这样的,老猫截取了其中一些网友的留言。 留言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 ! 所以接下来开始,希望大家就和老猫共同开启开源之旅了。在开源中成长,在开源中去结合实际场景学习一些新的知识。flow me!

    #权限系统
    上次更新: 2024/01/13, 21:56:41
    让大龄程序员欲罢不能的事儿
    whale系统实战,聊聊用户认证

    ← 让大龄程序员欲罢不能的事儿 whale系统实战,聊聊用户认证→

    最近更新
    01
    让大龄程序员欲罢不能的事儿
    09-23
    02
    运营明明设置了活动开始时间,为什么到点没生效?聊聊动态定时任务
    07-30
    03
    不是,大哥,咱这小门小户的,别搞我CDN流量啊
    07-25
    更多文章>
    Theme by Vdoing | Copyright © 2020-2024 Kitty Daddy | License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式