shiro概述和环境搭建

shiro框架 ginotang 1252℃ 0评论

shiro是什么

shiro是apache组织开发的框架,主要用于管理系统的授权和权限验证,达到对系统资源进行访问控制的目的。相比spring security,shiro轻量易用。

环境搭建

项目结构:

shiro project structure

创建一个maven项目,导入核心jar包。pom依赖信息如下:

编写shiro项目代码

ini配置文件内容

一些概念

SecurityManager、Subject、Realm和AuthenticationToken组成shiro的核心。

Subject对象

Subject对象表示一个应用程序用户的权限/授权信息状态。例如登录的用户是否已经授权,是否拥有某个资源的访问权限等等。

AuthenticationToken

用户名和密码验证是目前最常用的应用程序验证方式。AuthenticationToken是一个接口,该接口最简单的实现类是UsernamePasswordToken,顾名思义,该类里面包含的信息就是常用的用户名和密码。UsernamePasswordToken封装的数据一般是表单提交过来的数据。

Realm对象

Realm对象可以理解为一个用户信息的数据源。以用户登录为例,当用户填写好表单数据(用户名/密码)之后,提交的表单数据要和Realm里面的数据进行比对,如果Realm中的数据和用户提交的一致,则验证通过。

通常Realm里面的数据是一个后端数据,例如从数据库获取的用户数据(用户名/密码),或者从文件中获取的数据(IniRealm)。我们可以实现自己的Realm,不过,自定义的Realm一般不会直接实现Realm接口,而是继承AuthorizingRealm,这样会使事情变得更加简单。

Realm中只有一个主要方法:getAuthenticationInfo(AuthenticationToken token)。该方法只有一个参数AuthenticationToken,这个参数中有两个方法分别是getPrincipal()getCredentials(),前者通常用于获取用户名,后者的返回值则通常表示一个密码。

SecurityManager对象

实际上,shiro中的授权和验证分别由Authenticator和Authorizer对象负责实现,SecurityManager继承了这两个接口,从而提供了一个更加快捷的验证入口。Subject中的login方法实际上使用了SecurityManager的login方法进行信息验证。

SecurityUtils

SecurityUtils是SecurityManager的一个前端类,该类只有三个方法,分别用于获取和设置SecurityManager,还有一个用于获取Subject对象。

转载请注明:Pure nonsense » shiro概述和环境搭建

喜欢 (1)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x