技术帮
 

Shiro简介

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

1472955908895017376.png说两句


网上提供的Spring与Shiro整合的文章倒是很多,不过多是语焉不详,因此感觉有必要再造一个轮子。


1474898515444058446.png shiro是干什么的?

shiro是软件开发中负责账号认证和权限认证的开发框架。

简单的说就是负责两样事儿:1 验证用户的账号和密码是不是正确。2 用户的账号和密码验证通过后,在操作每个功能的时候验证用户是否有权限操作这个功能。

需要强调的是,shiro对账号认证不仅仅是登录账号,还可能是用户的电子邮箱、手机号等等唯一信息,验证的手段也是多种多样,否则也不能称之为框架了。


1474898515444058446.png shiro不做什么?

软件系统的用户登陆认证和权限控制靠的是用户登陆账号、密码以及用户拥有的角色、权限相配合来实现的。

shiro并不负责维护用户的角色和权限数据,这些数据需要开发人员写程序来实现存储和分配。


1474898515444058446.png shiro的用户名和密码存在哪里?

shiro不保存用户名和密码,需要用户的所有注册信息都是程序员自己维护保存到数据库中。


1474898515444058446.png shiro的角色和权限保存在哪里?

shiro不维护用户的角色和权限,无论是定义还是配置都不维护,这些需要程序员自己维护到数据库中。


1474898515444058446.png shiro如何检查用户是否登陆了呢?

 Shiro登陆认证流程


blob.png

注意:登陆认证的时候只验证用户名和密码,不考虑用户的角色和权限问题。

也就是说在登陆的时候只验证你确实是你,而不验证你能干什么。


1474898515444058446.png shiro如何检验用户的权限

首先,用户拥有的角色和权限需要程序员自己维护,推荐保存到数据库中。

在用户访问某个url的时候,shiro会通过过滤器调用Realm的doGetAuthorizationInfo方法,该方法需要程序员实现,返回值是SimpleAuthorizationInfo类型的,保存着当前用户拥有的角色和权限。

具体如何从数据库中读出当前用户的角色和权限,就是读数据库的过程了。

这样shiro就知道当前用户拥有哪些权限。然后匹配检验当前用户要访问的url需要什么权限,就可以决定用户是否可以访问该url了。


Shiro在配置文件中实现用户权限认证。

登陆Url:用户需要登陆进入的窗口。当用户未登陆的时候访问需要登陆才可以访问的url的时候,会自动跳转到该url。

无权限url:用户虽然登陆了,但访问某个url却被检测到没有访问权限,则跳转到该url。

自定义过滤器:可以配置哪些Url不需要登陆就可以访问,哪些需要登陆才可以访问,哪些必须拥有什么权限才可以访问。