Java秒杀系统实战系列~整合Shiro实现用户登录认证

总结:

这篇博客文章是“Java尖峰系统战斗系列文章”的第五篇文章。在这篇博文中,我们将集成权限认证授权框架Shiro来实现用户的登录认证功能,主要用于:要求用户抢购商品或限制用户在杀商品时登录!并且对于要过滤的特定URL(例如对应于快照请求的URL)(即,当用户访问指定的URL时,用户需要登录)。

含量:

对于Shiro,我相信你的朋友应该听说过它,甚至应该使用它!简单来说,它是一个非常有用的用户身份验证和授权框架。它可以实现用户登录认证,权限,资源授权,会话管理等功能。在这个尖峰系统中,我们将主要使用此框架来实现用户。身份验证和用户登录功能。

值得一提的是,本博客文章中介绍的与“Shiro实现用户登录认证”功能模块相关的数据库表是用户信息表用户,以下是实战链接。

(2)接下来是对应于UserController控制器中用户登录,用户登录和用户注销的请求的功能方法。完整的源代码如下:

其中,在匹配用户密码时,我们在这里使用Md5Hash方法,即MD5加密方法匹配(因为数据库用户表中用户的密码字段存储由MD5加密的加密字符串)p>

前端页面login.jsp的内容相对简单。您只需输入最基本的用户名和密码。下图显示了该页面的一些核心源代码:

图像

当当前终端提交“用户登录”请求时,用户名和密码以“提交表单”的形式提交给后端用户控制器控制器对应的登录方式。该方法首先进行最基本的参数判断和验证。验证通过后,调用Shiro的内置组件securityUtils.getSubject().login()方法来执行登录操作。登录操作将主要在“自定义领域DoGetAuthenticationInfo方法”中执行。

(3)下一步是基于Shiro的authorizingrealm,开发一个自定义领域,实现用户登录认证方法,即dogetAuthenticationInfo()方法。其完整的源代码如下:

usermapper.selectbyusername(用户名);主要用于根据用户名查询用户实体信息。相应的动态SQL编写如下:

值得一提的是,当用户成功登录(即用户名和密码的值与数据库的用户表匹配)时,我们将使用Shiro会话会话机制将当前用户的信息存储到服务器会话中,并将其缓存。时间!(这是3600秒,也就是1小时)!

(4)最后,我们需要实现“当用户访问要添加的商品的详细信息或捕捉商品或任何需要拦截的业务请求时,如何自动检测用户是否处于登录状态?如果已经登录,直接输入相应的服务请求。方法逻辑,否则,您需要转到用户登录页面,要求用户登录。“”

基于此要求,我们需要使用Shiro的组件ShiroFilterFactoryBean来实现“用户登录”判断,并使用FilterChainDefinitionMap拦截一些需要授权的链接URL。完整的源代码如下:

从上面的源代码可以看出,Shiro的ShiroFilterFactoryBean组件将拦截URL=/kill/execute和URL=/item/detail/*链接,即当用户访问这些URL时,系统将询问当前用户登录(前提是用户尚未登录!如果您已登录,请直接跳过它并输入实际的业务模块!)

此外,Shiro的ShiroFilterFactoryBean组件还设置了“转到登录页面”和“没有用户授权/无需登录的调整页面”的链接,/to/login和/unauth!

(5)此时,执行Shiro框架实现用户登录认证前后实战已完成,项目/系统在外部tomcat服务器上运行,打开浏览器访问“页面列表”要加标商品“,点击”详细信息“。此时,由于用户尚未登录,它将跳转到用户登录页面,如下所示:

图像

输入用户名:debug,密码:单击“登录”按钮,即可成功登录,并成功进入“详细信息页面”,如下图所示:

图像

登录成功后,返回上一个列表页面,即“要加标的产品的列表页面”,然后再次单击“详细信息”按钮。此时,您将直接进入“待加标产品的详细信息页面”而不跳转到“用户登录页面”,用户的登录状态将持续1小时! (这是通过Shiro的会议完成的)。

补充说明:

1,因为相应的博客更新可能不会很快,所以如果你想快速上手并阅读整个系统:《Java商城秒杀系统的设计与实战视频教程(SpringBoot版)》

目前,该尖峰系统的整体构造和代码作战已经完成。完整的源代码数据库地址可以在这里下载:记住Fork和Star!

小红牛

2019.07.25 12: 20

字数1357

总结:

这篇博客文章是“Java尖峰系统战斗系列文章”的第五篇文章。在这篇博文中,我们将集成权限认证授权框架Shiro来实现用户的登录认证功能,主要用于:要求用户抢购商品或限制用户在杀商品时登录!并且对于要过滤的特定URL(例如对应于快照请求的URL)(即,当用户访问指定的URL时,用户需要登录)。

含量:

对于Shiro,我相信你的朋友应该听说过它,甚至应该使用它!简单来说,它是一个非常有用的用户身份验证和授权框架。它可以实现用户登录认证,权限,资源授权,会话管理等功能。在这个尖峰系统中,我们将主要使用此框架来实现用户。身份验证和用户登录功能。

值得一提的是,本博客文章中介绍的与“Shiro实现用户登录认证”功能模块相关的数据库表是用户信息表用户,以下是实战链接。

(2)接下来是对应于UserController控制器中用户登录,用户登录和用户注销的请求的功能方法。完整的源代码如下:

其中,在匹配用户密码时,我们在这里使用Md5Hash方法,即MD5加密方法匹配(因为数据库用户表中用户的密码字段存储由MD5加密的加密字符串)p>

前端页面login.jsp的内容相对简单。您只需输入最基本的用户名和密码。下图显示了该页面的一些核心源代码:

图像

当前终端提交“用户登录”请求时,用户名和密码以“提交表单”的形式提交给对应于后端UserController控制器的登录方法。该方法首先执行最基本的参数判断和验证。验证通过后,调用Shiro的内置组件SecurityUtils.getSubject()。login()方法来执行登录操作。登录操作将主要在“自定义Realm doGetAuthenticationInfo方法”中执行。

(3)接下来是基于Shiro的AuthorizingRealm,开发一个自定义Realm,并实现用户登录验证方法,即doGetAuthenticationInfo()方法。其完整源代码如下:

UserMapper.selectByUserName(用户名);主要用于根据userName查询用户实体信息。相应的动态Sql编写如下:

值得一提的是,当用户成功登录时(即用户名和密码的值与数据库的用户表匹配),我们将使用Shiro会话会话机制将当前用户的信息存储到服务器会话中,并缓存它。时间! (这是3600s,即1小时)!

(4)最后,我们需要实现“当用户访问要加标的货物的详细信息或快照货物或需要截获的任何业务请求时,如何自动检测用户是否处于登录状态?如果已经登录,请直接输入相应的服务请求。方法逻辑,否则,您需要转到用户登录页面,要求用户登录。“

基于此要求,我们需要使用Shiro的组件ShiroFilterFactoryBean来实现“用户登录”判断,并使用FilterChainDefinitionMap拦截一些需要授权的链接URL。完整的源代码如下:

从上面的源代码可以看出,Shiro的ShiroFilterFactoryBean组件将拦截URL=/kill/execute和URL=/item/detail/*链接,即当用户访问这些URL时,系统将询问当前用户登录(前提是用户尚未登录!如果您已登录,请直接跳过它并输入实际的业务模块!)

此外,Shiro的ShiroFilterFactoryBean组件还设置了“转到登录页面”和“没有用户授权/无需登录的调整页面”的链接,/to/login和/unauth!

(5)此时,执行Shiro框架实现用户登录认证前后实战已完成,项目/系统在外部tomcat服务器上运行,打开浏览器访问“页面列表”要加标商品“,点击”详细信息“。此时,由于用户尚未登录,它将跳转到用户登录页面,如下所示:

图像

输入用户名:debug,密码:单击“登录”按钮,即可成功登录,并成功进入“详细信息页面”,如下图所示:

图像

登录成功后,返回上一个列表页面,即“要加标的产品的列表页面”,然后再次单击“详细信息”按钮。此时,您将直接进入“待加标产品的详细信息页面”而不跳转到“用户登录页面”,用户的登录状态将持续1小时! (这是通过Shiro的会议完成的)。

补充说明:

1,因为相应的博客更新可能不会很快,所以如果你想快速上手并阅读整个系统:《Java商城秒杀系统的设计与实战视频教程(SpringBoot版)》

目前,该尖峰系统的整体构造和代码作战已经完成。完整的源代码数据库地址可以在这里下载:记住Fork和Star!

总结:

这篇博客文章是“Java尖峰系统战斗系列文章”的第五篇文章。在这篇博文中,我们将集成权限认证授权框架Shiro来实现用户的登录认证功能,主要用于:要求用户抢购商品或限制用户在杀商品时登录!并且对于要过滤的特定URL(例如对应于快照请求的URL)(即,当用户访问指定的URL时,用户需要登录)。

含量:

对于Shiro,我相信你的朋友应该听说过它,甚至应该使用它!简单来说,它是一个非常有用的用户身份验证和授权框架。它可以实现用户登录认证,权限,资源授权,会话管理等功能。在这个尖峰系统中,我们将主要使用此框架来实现用户。身份验证和用户登录功能。

值得一提的是,本博客文章中介绍的与“Shiro实现用户登录认证”功能模块相关的数据库表是用户信息表用户,以下是实战链接。

(2)接下来是对应于UserController控制器中用户登录,用户登录和用户注销的请求的功能方法。完整的源代码如下:

其中,在匹配用户密码时,我们在这里使用Md5Hash方法,即MD5加密方法匹配(因为数据库用户表中用户的密码字段存储由MD5加密的加密字符串)p>

前端页面login.jsp的内容相对简单。您只需输入最基本的用户名和密码。下图显示了该页面的一些核心源代码:

图像

在当前端提交“用户登录”请求时,用户名和密码将以“提交表单”的形式提交给后端用户控制器控制器对应的登录方法。这种方法首先会做出最基本的参数判断和验证,并在验证通过后,Shiro的内置组件SecurityUtils。将调用getSubject Utils。()。 login()方法执行登录操作,其中登录操作主要在“自定义域”的“doGetAuthenticationInfo方法”中执行。

(3)接下来,我们基于Shiro的Authentication Realm开发一个自定义Realm,并实现用户登录验证方法doGetAuthentication Info()方法。完整的源代码如下:

其中,userMapper。 selectByUserName(userName)主要用于根据userName查询用户实体信息,其对应的动态Sql编写如下:

值得一提的是,当用户成功登录(即用户名和密码值与数据库的用户表匹配)时,我们将使用Shiro的Session会话机制将当前用户的信息存储到服务器会话中并对其进行缓存一段时间了! (在这种情况下,3600s,或1小时)!

(4)最后,我们需要实现“用户如何在访问要杀死的商品的细节或者急于购买商品或需要截获的任何商业请求时自动检测他们是否已登录?”如果已登录,则直接进入与业务请求对应的方法逻辑。否则,它需要转到用户登录页面并要求用户登录。

基于此要求,我们需要使用Shiro的组件ShiroFilterFactoryBean来实现“用户登录”判断,并使用FilterChainDefinitionMap拦截一些需要授权的链接URL。完整的源代码如下:

从上面的源代码可以看出,Shiro的ShiroFilterFactoryBean组件将拦截URL=/kill/execute和URL=/item/detail/*链接,即当用户访问这些URL时,系统将询问当前用户登录(前提是用户尚未登录!如果您已登录,请直接跳过它并输入实际的业务模块!)

此外,Shiro的ShiroFilterFactoryBean组件还设置了“转到登录页面”和“没有用户授权/无需登录的调整页面”的链接,/to/login和/unauth!

(5)此时,执行Shiro框架实现用户登录认证前后实战已完成,项目/系统在外部tomcat服务器上运行,打开浏览器访问“页面列表”要加标商品“,点击”详细信息“。此时,由于用户尚未登录,它将跳转到用户登录页面,如下所示:

图像

输入用户名:debug,密码:单击“登录”按钮,即可成功登录,并成功进入“详细信息页面”,如下图所示:

图像

登录成功后,返回上一个列表页面,即“要加标的产品的列表页面”,然后再次单击“详细信息”按钮。此时,您将直接进入“待加标产品的详细信息页面”而不跳转到“用户登录页面”,用户的登录状态将持续1小时! (这是通过Shiro的会议完成的)。

补充说明:

1,因为相应的博客更新可能不会很快,所以如果你想快速上手并阅读整个系统:《Java商城秒杀系统的设计与实战视频教程(SpringBoot版)》

目前,该尖峰系统的整体构造和代码作战已经完成。完整的源代码数据库地址可以在这里下载:记住Fork和Star!