3Shiro框架认证业务实现

3.1认证流程分析

身份认证即判定用户是否是系统的合法用户,用户访问系统资源时的认证(对用户身份信息的认证)流程图-5所示:
在这里插入图片描述
图-5
其中认证流程分析如下:
1)系统调用subject的login方法将用户信息提交给SecurityManager
2)SecurityManager将认证操作委托给认证器对象Authenticator
3)Authenticator将用户输入的身份信息传递给Realm。
4)Realm访问数据库获取用户信息然后对信息进行封装并返回。
5)Authenticator 对realm返回的信息进行身份认证。
思考:不使用shiro框架如何完成认证操作?filter,intercetor。

3.2认证服务端实现

3.2.1核心业务分析

认证业务API处理流程分析,如图-6所示:
在这里插入图片描述
图-6

3.2.2DAO接口定义

业务描述及设计实现。
在用户数据层对象SysUserDao中,按特定条件查询用户信息,并对其进行封装。
关键代码分析及实现。
在SysUserDao接口中,添加根据用户名获取用户对象的方法,关键代码如下:
SysUser findUserByUserName(String username)。

3.2.3Mapper元素定义

业务描述及设计实现。
根据SysUserDao中定义的方法,在SysUserMapper文件中添加元素定义。
关键代码分析及实现。
基于用户名获取用户对象的方法,关键代码如下:
在这里插入图片描述

3.2.4Service接口及实现

业务描述及设计实现。
本模块的业务在Realm类型的对象中进行实现,我们编写realm时,要继承
AuthorizingRealm并重写相关方法,完成认证及授权业务数据的获取及封装。
关键代码分析及实现。

第一步:定义ShiroUserRealm类,关键代码如下:

在这里插入图片描述
在这里插入图片描述

第二步:对此realm,需要在SpringShiroConfig类中,注入给SecurityManager对象

在这里插入图片描述

3.2.5Controller 类实现

业务描述及设计实现。
在此对象中定义相关方法,处理客户端的登陆请求,例如获取用户名,密码等然后提交该shiro框架进行认证。
关键代码分析及实现。

第一步:在SysUserController中添加处理登陆的方法。关键代码如下:

在这里插入图片描述

第二步:修改shiroFilterFactory的配置,对/user/doLogin.do这个路径进行匿名访问的配置

在这里插入图片描述

第三步:当我们在执行登录操作时,为了提高用户体验,可对系统中的异常信息进行处理,例如,在统一异常处理类中添加如下方法:

在这里插入图片描述

3.3认证客户端实现

3.3.1编写用户登陆页面

在/templates/pages/目录下添加登陆页面(login.html)。

3.3.2异步登陆操作实现

点击登录操作时,将输入的用户名,密码异步提交到服务端。
在这里插入图片描述

3.4退出操作配置实现

在SpringShiroConfig配置类中,修改过滤规则,添加黄色标记部分代码的配置,请看如下代码:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值