2009-11-26 66 views
0

我在做这件事上遇到了一些困难。使用Perl的HTML :: Mason进行登录会话的最佳方式是什么?

我有一个登录的HTML表单,我想知道,如果用户名和密码,必须与我的MySQL服务器的信息。

这样做的最佳方法是什么?

非常感谢你

+0

你是说你在MySQL中存储登录凭据??! – Ether 2009-11-26 19:43:39

+0

是的,我有一张带有用户信息的表格,另一张带有密码。 你是否检查用户输入,然后你选择表格来查看匹配或......你怎么做? 谢谢 – Davidslv 2009-11-27 10:16:51

回答

2

创建验证对MySQL的用户名/密码组合与DBI,如果它在%ARGS哈希通过用户名和密码返回true或false梅森组成部分。然后,使用返回值将组件加载到登录表单的顶部,以确定是显示登录表单还是重定向到您的内容。

1

总是存储密码的哈希值。当您必须验证用户凭据时,请对用户输入的密码进行散列处理,并将其与对应于特定用户的散列密码值进行比较。

+0

我有意,我正在寻找更多的编程答复或一些解释如何做。 – Davidslv 2009-11-27 12:30:02

4

我知道这个问题是有点老了,但现在我想我回答了后人。

我想你有几个选择。

一种选择是不使用HTML ::梅森为密码验证都没有。这是我们以前做的事情。由于您的HTML :: Mason页面可能运行在Web服务器内,因此您可以使用它来执行用户名和密码验证。例如,如果您使用Apache和mod_perl来为您的站点提供服务,那么有几个模块用于身份验证,包括可以与MySQL交谈并使用用户名和密码列验证用户表的模块。检查Apache 2.2的文档mod_authn_dbd。我推荐这种方法。

另一种方法是使用一个框架像Catalyst。 Catalyst已经拥有用于进行所需身份验证的插件,并且如果您在Mason中尝试并完成100%操作,它将使您不必考虑大部分需要自行编码的问题。你仍然可以为你的页面模板使用HTML :: Mason。

如果你有你的心脏上使用HTML ::梅森做认证,然后我会做这样设置:

  • 放置在文件夹中的autohandler要保护 - 记所有子文件夹都将收到相同的身份验证保护

  • 在自动处理程序中的一个<%init>块中,检查cookie中的有效会话标记。如果不存在,请将($ m-> redirect)重定向到登录表单。否则,什么都不做 - 该处理程序将继续运行并且该页面将被提供。

  • 在登录表单处理程序,提取在<%ARGS>块中的用户名和密码。使用用户名,从数据库中检索散列密码。提取salt,并将其前置到用户提供的明文密码并重新对其进行哈希处理。然后比较哈希字符串。如果它们不匹配,则重定向回错误登录页面。否则通过。

如果以上的部分没有意义环顾四周在本网站“盐析密码”等,由于原来的回答者指出,这是恶业存放明文口令在数据库中。:-)

+0

我会说,如果其他人已经开始设置Catalyst(以及它的gazillion模块依赖关系)的巨大头痛,那么同时使用Catalyst和HTML :: Mason会很好。 – 2009-12-20 22:58:06

+0

感谢Hissohathair! 这是我正在寻找的答复。要研究你说的话! 再次感谢。 所有快乐圣诞! – Davidslv 2009-12-23 12:32:26

相关问题