derhansen / fe_change_pwd
一个插件,用于启用前端用户更改密码的功能。包含可配置的密码规则和密码更改强制执行。
Requires
- php: >=8.2
- ext-curl: *
- ext-pdo: *
- typo3/cms-core: ^13.2
- dev-main
- 5.1.0
- 5.0.0
- 4.x-dev
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- dev-develop
- dev-task/typo3-v13
- dev-l10n_main
This package is auto-updated.
Last update: 2024-09-18 17:38:27 UTC
README
为前端用户更改密码
它做什么?
此TYPO3扩展包含一个插件,允许已登录的前端用户更改他们的密码。新用户密码将根据前端用户的TYPO3密码策略进行验证。
可以强制执行前端用户的密码更改,并且密码可以在一定天数后过期。
功能
- 更改密码插件
- 验证密码是否满足前端用户的TYPO3密码策略
- 强制前端用户更改密码
- 在需要更改密码时重定向到配置的页面
- 密码在可配置天数后过期
- 可选:在更改密码时要求输入当前密码
- 可选:在更改密码时要求输入一个密码更改代码,该代码将发送到用户的电子邮件地址
截图
以下截图显示了用户尝试提交一个弱密码后“更改前端用户密码”插件的输出。
安装
-
从TYPO3扩展存储库或使用composer安装扩展,并将静态Typoscript“更改前端用户密码”添加到您的Typoscript模板中。
-
将“更改前端用户密码”站点设置添加到您的站点
-
创建一个新页面,并确保该页面只对已登录的前端用户可见。
-
将“更改前端用户密码”插件添加到步骤2中创建的页面
-
根据需要更改站点设置。请注意,如果您想使用密码更改强制执行,您必须将
fe_change_pwd.changePasswordPid
设置为步骤2中创建的页面的页面uid -
根据需要更改Typoscript设置。
-
可选:在Typoscript中更改扩展模板的路径并修改模板以满足您的需求。
新的fe_user字段
该扩展向fe_users表添加了两个字段(见截图)
如果选中“用户必须在下次登录时更改密码”复选框,并且已配置有效的changePasswordPid
,则在用户以在plugin.tx_fechangepwd.settings.redirect
部分配置的方式访问页面时登录后,将重定向到配置的页面。
密码过期日期定义了用户必须更改密码的日期。
提示:如果您想快速让所有前端用户更改他们的密码,您可以使用简单的SQL语句将数据库中的字段设置为以下示例所示:UPDATE fe_users set must_change_password=1;
站点配置设置
-
fe_change_pwd.changePasswordPid
(整数) 当需要更改密码时重定向到的pid。这通常是包含扩展插件的页面 -
fe_change_pwd.redirect.allAccessProtectedPages
(布尔值) 如果设置为1
,则将强制重定向到配置的fe_change_pwd.changePasswordPid
的所有受保护页面。请注意,如果设置此选项,则忽略includePageUids
! -
fe_change_pwd.redirect.includePageUids
(字符串) 将强制重定向到配置的changePasswordPid的配置pid,以逗号分隔 -
fe_change_pwd.redirect.includePageUidsRecursionLevel
(整数) 在fe_change_pwd.redirect.includePageUids
中配置的所有页面的递归级别。如果您想强制将页面及其所有子页面重定向,请使用此选项。 -
fe_change_pwd.redirect.excludePageUids
(字符串) 对于用逗号分隔的配置的 PID,将不会强制重定向。 -
fe_change_pwd.redirect.excludePageUidsRecursionLevel
(整数) 在fe_change_pwd.redirect.excludePageUids
中配置的所有页面的递归级别。如果您想排除重定向的页面及其所有子页面,请使用此选项。
TypoScript 配置设置
以下 TypoScript 设置可用。
plugin.tx_fechangepwd.settings.requireCurrentPassword
enabled
(布尔值) 如果设置为1
,则用户必须输入当前密码才能设置新密码。默认设置为1
。
plugin.tx_fechangepwd.settings.requireChangePasswordCode
enabled
(布尔值) 如果设置为1
,则用户必须输入更改密码代码(该代码将通过电子邮件发送到用户的邮箱),才能设置新密码。默认设置为0
。validityInMinutes
(整数) 用户请求更改密码代码后,代码有效的分钟数。senderEmail
(字符串) 发送至用户的电子邮件地址。senderName
(字符串) 发送至用户的电子邮件的发件人姓名。
plugin.tx_fechangepwd.settings.passwordExpiration
enabled
(布尔值) 如果设置为1
,新密码将在配置的天数后过期。validityInDays
(整数) 新密码在需要更改之前有效的天数。
plugin.tx_fechangepwd.settings.afterPasswordChangeAction
redirect
(字符串) 将用户重定向到 "update" 动作,并添加一条消息,说明密码已更新。view
(字符串) 显示更新动作的视图,其中包含一条消息,说明密码已更新。
样式
扩展输出完全未设置样式。您可以根据需要重写 fluid 模板。
重写 Fluid 邮件模板
如果用于 "更改密码代码" 邮件的模板需要被重写,可以在 $GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'][750]
中更改,或者为 ChangePasswordCode
模板添加一个模板重写。
可能的错误
没有密码散列服务
如果无法散列,扩展将不会保存用户的密码。如果发生此情况,将显示以下异常
无法初始化安全的密码散列服务。请检查您的 TYPO3 系统配置
可能的 CSRF 检测到
当扩展检测到可能的 CSRF 时,将显示以下消息
检测到可能的 CSRF。确保提供了有效的 "changeHmac"。
如果您意外看到此消息,请确保按照 "重大更改" 中描述的方式添加 changeHmac
属性。
面向开发者
PSR-14 事件
扩展当前包含以下 PSR-14 事件
- Derhansen\FeChangePwd\Controller\PasswordController
AfterPasswordUpdatedEvent
- Derhansen\FeChangePwd\Middleware\ForcePasswordChangeRedirect
ModifyRedirectUrlParameterEvent
此外,扩展还调度了 TYPO3 核心PSR-14事件 TYPO3\CMS\Core\PasswordPolicy\Event\EnrichPasswordValidationContextDataEvent
如果需要考虑额外的用户数据来验证密码,请使用此事件将数据添加到 ContextData
DTO。
版本
重大更改
版本 5.0.0
此版本包含重大的重大更改,必须手动迁移。以下 TypoScript 设置必须迁移到站点设置
plugin.tx_fechangepwd.settings.changePasswordPid
=>fe_change_pwd.changePasswordPid
plugin.tx_fechangepwd.settings.redirect.*
=>fe_change_pwd.redirect.*
此更改是必要的,因为在 PSR-15 MiddleWare 中缓存页面不可用完整的 TypoScript。
此破坏性更改限制了插件只能在每个站点使用一次,如果使用“必须更改密码”或“密码过期日期”功能,这两个功能都需要重定向到单个页面UID,现在已在站点设置中配置。
版本 4.0.0
此版本包含重大破坏性更改,因为现在使用TYPO3密码策略进行密码验证。
- 已移除所有密码验证器,以支持TYPO3密码策略。请确保TYPO3默认密码策略符合您的需求
- 已移除pwned密码检查。如果需要此检查,请使用TYPO3扩展add_pwd_policy在密码策略中对前端用户进行设置
- 扩展现在默认需要当前用户密码。您可以在设置中禁用此检查,使用
requireCurrentPassword
- 扩展需要启用TYPO3
security.usePasswordPolicyForFrontendUsers
功能切换 - 已删除TYPO3 11.5兼容性。
版本 3.0.0
- 已删除TYPO3 9.5和10.4兼容性。
- 将TypoScript文件的文件扩展名更改为
.typoscript
- 用PSR-14事件替换了信号槽
版本 2.0.0
已删除TYPO3 8.7兼容性。
版本 1.5.0
添加了CSRF保护。
如果您使用自己的“Edit.html”模板,必须在<f:form>...</f:form>
内添加以下代码。
<f:form.hidden property="changeHmac" />
在版本1.5.0之前,如果禁用了settings.requireCurrentPassword
(默认),则扩展包含CSRF漏洞。为了缓解问题,已在DTO中添加了changeHmac
属性。此属性包含一个HMAC,该HMAC对于当前登录用户是唯一的。当提供的changeHmac
不匹配预期值时,提交表单时将抛出异常。
感谢赞助
-
感谢Wikafi sprl赞助此扩展的初始开发。
-
感谢t3site.com赞助“要求当前密码”功能。
-
感谢cron IT GmbH赞助“要求更改密码代码”功能。