扫码阅读
手机扫码阅读

手机短信登录、邮箱登录、QQ 登录都想要,咋办?

10 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:手机短信登录、邮箱登录、QQ 登录都想要,咋办?
文章来源:
江南一点雨
扫码关注公众号

本文讨论了Shiro框架中多Realm认证策略的实现及相关源码。在Shiro中,多Realm机制允许通过不同的登录方式如手机验证码、第三方登录或邮箱登录进行用户认证。每个Realm对应一种登录方式,通过ModularRealmAuthenticator进行统一管理。

在配置Realm时,无论是单个还是多个,最终都会通过afterRealmsSet方法被ModularRealmAuthenticator管理。核心方法doAuthenticate会根据配置的Realm数量,调用doSingleRealmAuthentication或doMultiRealmAuthentication方法。在存在多个Realm时,会涉及到认证策略的问题,即何时认证成功。

负责认证策略的是AuthenticationStrategy接口,它有三个实现类:AtLeastOneSuccessfulStrategy(至少一个Realm成功)、AllSuccessfulStrategy(所有Realm成功)和FirstSuccessfulStrategy(返回第一个成功的用户信息)。这三种策略的主要区别在于处理多个Realm认证结果的方式。

AuthenticationStrategy的实现类通过四个方法管理认证流程:beforeAllAttempts、beforeAttempt、afterAttempt和afterAllAttempts。这些方法在不同的实现类中有不同的行为,主要负责准备认证过程、处理单个Realm认证后的事宜以及合并多个Realm的认证信息。

文章最后指出,虽然AtLeastOneSuccessfulStrategy和FirstSuccessfulStrategy之间在早期版本中没有显著差异,但在最新版本中它们的行为有所不同。具体的方法实现和行为差异需要根据实际版本查看相应源码。

想要了解更多内容?

查看原文:手机短信登录、邮箱登录、QQ 登录都想要,咋办?
文章来源:
江南一点雨
扫码关注公众号