安全管理框架,用Shiro还是用Spring Security?

安全管理框架,用Shiro还是用Spring Security?

开发Java应用项目的时候,安全管理通常来讲是必不可少的功能。常用的安全管理框架有Apache Shiro和Spring Security,那么作为一名开发人员的话,该如何选择自己的权限管理框架呢?

首先我们来看一看两者的区别。

Apache Shiro是一个强大且易用的Java安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密等功能。他的API也非常易于理解的API,因此,对于初学者来说,非常容易上手。

它的特点包括:

· 易于理解的 Java Security API;

· 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory等);

· 对角色的简单的签权(访问控制),支持细粒度的签权;

· 支持一级缓存,以提升应用程序的性能;

· 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;

· 异构客户端会话访问;

· 非常简单地加密 API;

· 不跟任何的框架或者容器捆绑,可以独立运行。

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(控制反转),DI( 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。它与Spring MVC能够很好地集成,并配备了流行的安全算法实现捆绑在一起。Spring Security在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全。

从功能上来讲,shiro能实现的,Spring Security 基本都能实现,依赖于Spring体系,但是好处是Spring全家桶的亲儿子,集成上更加契合,在使用上,比shiro略负责。但是Shiro比Spring Security更容易使用,也就是实现上简单一些,同时基本的授权认证Shiro也基本够用。

从社区活跃度来说,Spring Security社区支持度更高,Spring社区的亲儿子,支持力度和更新维护上有优势。相比之下Shiro的支持度就差了一点,但是依然还是有很多开发者在为Shiro做出贡献。

而Shiro 功能强大、简单、灵活。不跟任何的框架或者容器绑定,可以独立运行。因此对于非Spring的项目,Shiro兼容性更高一些。

因此,从比较上来讲,两者的区别不是很大。使用的时候,如果开发框架全部采用Spring全家桶的话,那么用Spring Security会比较合适一些。而对于刚开始接触安全管理框架或者是不用Spring全家桶的话,用Shiro比较好一些。

但是,同时我们也应该注意到,Shiro和Spring Security都已经诞生了十几年了,随着技术的演进发展,其基本框架也产生了一定局限性,尤其是对于前后端分离的框架来说,需要多做很多兼容性的工作。

在这种情况下,新的Java权限管理框架Sa-Token就应运而生了。

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。

Sa-Token 的 API 设计非常简单,以登录认证为例,只需要两行代码就可以完成了:

// 在登录时写入当前会话的账号id

StpUtil.login(10001);

// 然后在需要校验登录处调用以下方法:

// 如果当前会话未登录,这句代码会抛出 `NotLoginException` 异常

StpUtil.checkLogin();

再比如权限认证,如下代码即可完成(只有具备 user:add 权限的会话才可以进入请求):

@SaCheckPermission(“user:add”)

@RequestMapping(“/user/insert”)

public String insert(SysUser user) {

// …

return “用户增加”;

}

看吧,是不是很简单,相比起Shrio和Spring Security繁琐来说,简单是懒人的福音。事实上,对于绝大部分的权限控制功能Sa-Token都能够用一句话来完成。就像下面一样。

StpUtil.login(10001); // 标记当前会话登录的账号id

StpUtil.getLoginId(); // 获取当前会话登录的账号id

StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false

StpUtil.logout(); // 当前会话注销登录

StpUtil.kickout(10001); // 将账号为10001的会话踢下线

StpUtil.hasRole(“super-admin”); // 查询当前账号是否含有指定角色标识, 返回true或false

StpUtil.hasPermission(“user:add”); // 查询当前账号是否含有指定权限, 返回true或false

StpUtil.getSession(); // 获取当前账号id的Session

StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session

StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值

StpUtil.login(10001, “PC”); // 指定设备标识登录,常用于“同端互斥登录”

StpUtil.kickout(10001, “PC”); // 指定账号指定设备标识踢下线 (不同端不受影响)

StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒

StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常

StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号

因此,技术发展日新月异,作为一名程序员,要紧跟时代的发展,才能使自己不至于落后。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月16日 18:00
下一篇 2022年6月16日 18:01

相关推荐

  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 全民K歌升级新版本7.0之后,有哪些隐藏功能?

    作者:高百烈来源:知乎 这个功能,旧版并没有,要升级到全新的全民K歌7.0版本才能发现。 作为朋友圈当代K歌之王,我费了不少功夫才抢到内测版本。有一说一,全民K歌的路子真的很野,新…

    2022年11月25日
  • 上手Reno8 Pro体验跨屏互联 实在太方便!

    11月已经来到了月底,在手机品牌又要推出新一年度的新品手机之前,我们来点评一下今年令人惊喜的产品。如OPPO的Reno8 Pro系列,该系列搭载双芯影像配置获得了很多消费者的认可。…

    2022年11月25日
  • 博客营销的3大优势解析(博客营销怎么做)

    不知不觉已经写了24篇文章,加上这篇是第25篇了,都是自己这几年来用过的营销方法,如果遇到有些不懂的,我会咨询我的朋友和同事帮忙,尽量让每一篇有价值,哪怕是对大家有一点点帮助也行,…

    2022年11月25日
  • 华为手机怎么扫一扫连接wifi(手机扫一扫在哪里)

    手机浏览器可以用来浏览网页、看新闻、看视频,还能搜索问题,在我们的工作生活中浏览器占据着非常重要的位置。手机浏览器除了这些作用,其实它隐藏着其他功能,比如:扫一扫。扫一扫可不只是用…

    2022年11月24日
  • 三星手机截屏(三星手机截屏图片在哪个文件夹)

    本文主要讲的是三星手机截屏,以及和三星手机截屏图片在哪个文件夹相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 三星手机截屏怎么截 三星手机四种截屏方法 1、普通截…

    2022年11月24日
  • 微信微店怎么开

    微信开店的方式有以下两种1基于微信公众号搭建一个“微商城”2基于微信小程序,搭建一个商城型小程序下面给你介绍一下具体的流程 1登录微信公众平台,申请注册一个微信公众号,或者直接注册…

    2022年11月24日
  • 英特尔推出按需付费芯片授权服务 针对新至强处理器

    此前有消息传出,英特尔将针对服务器芯片推出全新的付费解锁功能服务。现在,英特尔已经正式公布了这一服务,名为“Intel On Demand”,旨在为客户“提供灵活的消费功能以及根据…

    2022年11月23日
  • magicos7.0升级名单 magicos7.0支持机型名单一览

    Magicos7.0系统升级名单有哪些?昨天荣耀官方正式发布了Magicos7.0系统,并且给出了不同机型的系统升级推送时间。大家可以在本文中查看自己的机型是否支持升级,以及具体的…

    2022年11月23日
  • 快手限流多久能解除(快手限流什么意思)

    我相信很多人都看中了快手平台的商机,都争先恐后地想要抢占机会,可一些人刚刚作出一点成绩,就被降权了,自己也不知道什么原因。所以今天就来聊聊快手账号降权操作分享,赶快来看看避免违规!…

    2022年11月23日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息