繁体   English   中英

用户注册设计

[英]user registration design

我正在为代码点火器构建自定义用户注册/登录/ bla bla bla库。

我正在寻找有关图书馆方向的一些提示。

显然,IE和一般的库文件一样,您将需要一些其他函数来调用该库。

验证逻辑应该去哪儿?

情境

我们向http://example.com/user/register/joe@mail.com/joesPassword发出请求

现在,在某一阶段的register用户控制器功能需要调用register用户库函数。

我是否将验证(已经存在,需要密码,有效电子邮件,密码符合最低要求等)构建到控制器库中

我最初的直觉是将验证内置到控制器中,而让库函数仅做一件事。 也就是说, 用户库中register功能将仅使用sha1()密码并将用户名/密码插入数据库。

我是在这里走正确的路,还是图书馆应该做所有的工作,而控制器只是充当接收和传递请求的角色?

我认为您这样做是出于自己的利益,即纯粹出于自我教育目的。 如果没有,您可能正在重新发明轮子-我几乎无法想象到codeigniter还没有完善的注册解决方案。 但是,如果您确实要构建一个处理用户注册的库,请考虑以下事项:

  • 不要将注册表单参数作为URL的一部分传递。 http://example.com/user/register/joe@mail.com/joesPassword显然是一个错误的示例,并且是一个巨大的安全漏洞。 对表单使用“ post”方法将变量传递给控制器​​。
  • 使用客户端验证,最好与基于jquery,mootools,yui等构建的即用型javascript解决方案配合使用-不管您的js库偏好是什么。 使用客户端验证可以为您的未来用户节省时间和精力。 检查用户名可用性,密码强度,电子邮件地址有效性(通过regexp),确认密码字段的密码匹配。 客户端验证属于库的“视图”部分。
  • 使用散列的站点机密作为表单中的隐藏输入。
  • 为您的表单使用可访问的验证码。
  • 根据会话使您的表单具有粘性。 如果您的用户填写表格,在完成注册之前导航离开,然后返回表格,则应该为他/她提供以前填写的值。
  • 启用第三方注册。 用户应该能够通过他们的第三方帐户注册到您的网站-在您的注册表格上至少启用openID和facebook连接
  • 使用服务器端验证,检查所有字段内容的有效性,转义所有用户输入。 服务器端验证属于库的控制器或模型部分,我希望将其放入模型中。
  • 创建可配置的工作流程。 如果您想创建一个灵活的库,则必须满足注册工作流程的各种需求。 在您的站点上启用用户之前,您的某些图书馆用户将需要进行人工帐户审核。 其他人将希望在通过电子邮件确认请求后自动启用用户。
  • 不要硬编码注册表中的哪些字段。 根据经验,注册越少,所以您在注册用户时希望拥有最少的字段集(否则,他们只会说:“哈哈,您要问我母亲的娘家姓。名称?不,谢谢”)。 但是,您正在构建 ,因此让您的库用户决定将哪些字段包括在注册表单中
  • 作为上一点的附录,请创建一个灵活的API,用于定义注册表单字段,类型和验证规则。

我敢肯定,还有更多的指导方针,我还没有提到移动设备的自定义视图,也许还有更多。 但是以上所述应该为您朝正确方向迈出了第一步。

至于您的问题的这一部分:“我是在这里走正确的路,还是图书馆应该做所有的工作,而控制器只是充当接收和传递请求的角色?” -这是IMO的优先选择问题,但是我将控制器用作一般任务,即解析表单值并将其转义,然后将这些预处理值传递给进行实际(语义)验证的模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM