【问题标题】:Ion Auth doesn't allow for passwords containing ampersandsIon Auth 不允许包含 & 符号的密码
【发布时间】:2015-05-12 22:32:41
【问题描述】:

我正在使用 CodeIgniter 和 Ion Auth 为客户开发一个定制的 Web 系统。到目前为止一切都很好,但是我刚刚遇到一个问题,如果我尝试设置带有 & 符号的密码,该用户将无法再登录系统。

起初我认为这个问题可能与字符编码有关,因为我使用文字字符串手动设置密码,但是如果我直接从 HTML 表单中获取输入,也会发生同样的情况。我没有更改 Ion Auth 中的任何加密/哈希设置,只有站点标题、默认用户组和用于用户名的表属性。

我正在使用 CodeIgniter 3 和 Ion Auth。如果您需要更多信息,请告诉我。

你知道这里发生了什么吗?

【问题讨论】:

  • 我怀疑输入类和允许的字符。请参阅this 答案,但不要破解核心文件。相反,在核心中创建 MY_Input.php。
  • @Tpojka 感谢您的评论。每次我尝试向正则表达式添加星号时,它都会中断,即使我转义它或使用 preg_quote()。正则表达式是什么?
  • 我认为你应该重新开始,然后看看哪里出了问题。因为我刚刚在 ion auth 中尝试了带星号(Shift+8)的密码,并且它可以正常工作。另外,我没有对 Input 类进行任何更改。
  • @Tpojka 这就是我通常会做的,但不幸的是系统实际上正在使用中,所以这实际上只是最后的手段!这就是我来这里的原因。
  • 我的意思是我无法重现错误,因为 Ion Auth 与密码中的星号完美配合。首先,我的评论是在实际检查之前,但只是我的逻辑流程。

标签: php codeigniter passwords


【解决方案1】:

我刚刚发现了这个问题,这让我觉得有点愚蠢,但我想我会让其他人知道解决方案,因为如果我遇到了这个问题,我相信其他人会绑定到。

问题与 Ion Auth 无关,而是与我错误地使用 CodeIgniter 函数有关。为了从表单中获取密码,我使用了set_value('password),它实际上将HTML 的值转义为documented herewritten about here。显然,通过使用echo 打印密码(这是我尝试调试的方式),我看不到原始字符串以任何方式被更改,但它对哈希产生了影响。

解决方案是简单地使用$this->input->post('password') 来获取密码,因为此函数不会更改原始输入。

希望对某人有所帮助。这个故事的寓意是在开始使用之前熟悉任何框架并通读文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 2013-06-10
    • 2014-03-13
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2015-02-02
    相关资源
    最近更新 更多