人事项目开发记录-登录模块

简介: 人事项目开发记录-登录模块

后端接口实现

后端权限认证采用Spring Security实现(本小节中大量知识点与第10章的内容相关,需要读者熟练掌握第10章的内容),数据库访问使用MyBatis,同时使用Redis实现认证信息缓存。因此,后端首先添加如下依赖(依次是MyBatis依赖、Spring Security依赖、Redis依赖、数据库连接池依赖、数据库驱动依赖以及缓存依赖):

依赖添加完成后,接下来在application.properties中配置数据库连接、Redis连接以及缓存等。

配置完成后,接下来实现用户认证的配置。用户认证使用Spring Security实现,因此需要首先提供一个UserDetails的实例,在人事管理系统中,登录操作是Hr登录,根据前面的Hr表创建Hr实体类并实现UserDetails接口,代码如下:

代码解释:

• 自定义类继承自UserDetails,并实现该接口中相关的方法。前端用户在执行过程中未抛出异常,则说明请求可以通过;若抛出异常,则说明请求权限不足。

• 如果所需要的角色是ROLE_LOGIN,那么只需要判断auth不是匿名用户的实例,即表示当前用户已登录。

接下来提供一个AccessDeniedHandler的实例来返回授权失败的信息:

当授权失败时,在这里返回授权失败的信息。

当所有准备工作完成后,接下来配置Spring Security,代码如下:

代码解释:

• 首先通过@EnableGlobalMethodSecurity注解开启基于注解的安全配置,启用@PreAuthorize和@PostAuthorize两个注解。

• 在配置类中注入之前创建的4个Bean,在AuthenticationManagerBuilder中配置userDetailsService和passwordEncoder。

• 在WebSecurity中配置需要忽略的路径。

• 在HttpSecurity中配置拦截规则、表单登录、登录成功或失败的响应等。

• 最后通过accessDeniedHandler配置异常处理。

另外,前文提到MenuService中的getAllMenu方法在每次请求时都需要查询数据库,效率极低,因此可以将该数据缓存下来,代码如下:

经过前面这一整套的配置后,登录认证接口已经搭建成功了,接下来可以使用Postman等工具进行测试了。

登录测试如图

登录成功后,访问http://localhost:8082/employee/advanced/hello接口,由于当前用户不具备相应的角色,访问结果如图


相关文章
预约抢单互助系统开发详细功能/需求方案/步骤功能/逻辑项目/源码案例
The development model of appointment and order grabbing mutual assistance system is a widely used development model on mutual assistance service platforms. It adopts a combination of appointment and order grabbing modes, allowing users to make appointments or actively participate in mutual assistanc
|
6月前
|
小程序 JavaScript Java
人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)
人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)
91 1
|
6月前
|
小程序 JavaScript Java
宿舍|学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)
宿舍|学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)
94 0
|
6月前
|
JavaScript Java 关系型数据库
学生公寓|基于Springboot的学生公寓管理系统设计与实现(源码+数据库+文档)
学生公寓|基于Springboot的学生公寓管理系统设计与实现(源码+数据库+文档)
57 0
|
6月前
|
前端开发 Java
springboot项目中外卖用户下单业务功能之需求分析+数据模型+功能开发(详细步骤)
springboot项目中外卖用户下单业务功能之需求分析+数据模型+功能开发(详细步骤)
91 0
|
缓存 小程序 前端开发
【易售小程序项目】请求包创建+登录功能实现【基于若依管理系统开发】
【易售小程序项目】请求包创建+登录功能实现【基于若依管理系统开发】
125 0
|
小程序 前端开发
【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】
【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】
87 0
|
存储 小程序 前端开发
【易售小程序项目】私聊功能uniapp界面实现 (买家、卖家 沟通商品信息)【后端基于若依管理系统开发】
【易售小程序项目】私聊功能uniapp界面实现 (买家、卖家 沟通商品信息)【后端基于若依管理系统开发】
164 0
|
JavaScript 前端开发 NoSQL
|
JSON JavaScript 前端开发