当前位置: 首页 > 网络应用技术

春季安全播放鲜花!DIY登录的两种方式

时间:2023-03-08 16:53:14 网络应用技术

  在正常情况下,当我们使用Spring Security时,我们使用Spring Security随附的登录方案,配置登录接口,配置登录参数,然后配置登录回调。这种用法可以被视为最佳实践!

  但!

  总会有一些奇怪的需求,例如想要自定义登录和编写逻辑逻辑,例如shiro。如果我想实现这个问题,该怎么办?今天兄弟歌会与您分享。

  兄弟歌曲考虑了这一点,并希望在春季安全性中自定义逻辑逻辑。我们有两个想法,但是这两个想法在底部实现。让我们一起看看。

  前面的兄弟歌曲分享了春季安全视频:

  该视频主要是与您分享,我们实际上可以使用httpservletrequest完成系统登录。这实际上是Javaee的常态。尽管这种登录方法不受欢迎,但很有趣!

  然后,我还与您分享了一个视频:

  该视频实际上是在谈论HttpservletRequest逻辑的实现,或者说是Httpservlequest提供的弹簧安全性,以及HttpservletRequest提供的弹簧安全性根据其自己的实现将其重写。

  有了这两个储备知识,第一个DIY春季安全登录计划即将发布。

  让我们看一下特定的操作。

  首先,让我们创建一个Spring Boot项目,并介绍Web和Security的两个依赖性,如下所示::

  便利,我们在应用程序中配置默认用户名密码。

  接下来,我们为登录接口发布SecurityConfig:

  登录接口是,一段时间以后,我们是自定义的逻辑,我们将研究它:

  直接调用httpservletrequest#登录方法,然后传递用户名和密码以完成登录操作。

  最后,我们提供了另一个测试接口,如下:

  只是这个!

  启动项目,我们首先访问接口,并且访问失败。接下来,我们访问接口以执行登录操作,如下所示:

  登录成功后,转到访问界面,您可以在此时访问成功。

  这很容易吗?登录成功后,未来的授权和其他操作仍然是原始写作。

  上面的登录方法的原理实际上是在开始时引入了歌曲兄弟。如果您不熟悉,可以看到这两个视频:

  我也在这里说一点。

  这

  看得到:

  此方法在身份验证后返回身份验证对象。

  这是登录方法的实现逻辑。

  Servlet3SecurityContextrawarereQuestWrapper类还重写了httpservletrequest#authenticate方法。这也是一种认证方法:

  可以看出,该方法用于确定用户是否已经完成了身份验证操作,返回返回,说用户已经完成了认证,并返回false以说用户尚未完成认证工作。

  在阅读了上述原则分析后,每个人都应该理解第二个解决方案,即不使用httpservletrequest#登录方法。我们直接致电AuthenticationManager进行登录验证。

  让我们来看看。

  首先,我们修改配置类如下:

  下一步提供登录接口:

  在登录接口中,传递用户名和密码以及其他参数,然后将参数(例如用户名和密码)封装到用户名Passpasswordauthenticationtoken对象中。最后,调用AuthenticationManager#身份验证方法进行验证。身份验证对象存储在SecurityContexTholder中。

  配置完成后,重新启动项目并执行登录测试。

  第二个解决方案与第一个方案相同。第二个实际上是拉出底层并重新实现。

  好吧,我今天将介绍两个春季安全性DIY登录计划。这些解决方案可能不常用于工作中,但是对于每个人都了解春季安全原则仍然非常有帮助。有兴趣的朋友可以敲打它来尝试它。哦?

  此外,如果您觉得阅读本文很困难,则可以在公共帐户的背景中回复,并查看春季安全系列中的其他文章。这有助于理解本文。当然,您还可以看Songge的新书:

  《春季安全》一书已由Tsinghua大学出版社正式出版。有兴趣的合作伙伴在这里戳戳 - > - > - > - 闪闪发光的弹簧安全性,一本书学习了春季安全性。