在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增、编辑房源信息以及上传房源配图的功能。到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录、注册开始。

前台模板使用MUI,一套用于手机端的HTML5模板,但开发期间仍然使用Chrome、FireFox等PC浏览器。

一 注册

注册要求用户输入手机号密码等信息

a) 注册的处理过程为:用户输入手机号后,给手机发送验证码,用户提供收到的验证码以及密码、确认密码,随后便可以点击注册,在浏览器进行简单的有效性校验后,在服务器再次判断验证码是否正确、两次密码是否一致等,这些都通过后便像数据库添加注册用户数据。

b) 短信验证码为付费服务,但有些短信运营商会为新用户提供免费试用,机制如杨老师更是为我们提供了模拟短信接口,用法与短信运营商类似,设置短信模板和模板ID后,就可以使用特定ID的模板来发送了。

c) 为了防止被利用来滥发短信,每次发送短信验证码前用户要输入图形验证码,图形验证码保存在TempData中,而且每次输入错误,都应强制刷新。

d) 注册流程中有个漏洞需要防范:用户通过了短信验证后,如果随意更改了注册手机号,也是可以注册成功的!这就需要增加验证发送验证码的手机号与注重提交注册的手机号是否一致的判断。


二 登录

对登录设置了输入密码错误次数限制,超过了限定次数会在一段时间内不再受理该用户的登录请求,从安全角度来说,这可以避免被撞库。


三 修改密码

a) 乍一想挺简单的修改密码功能,实际做起来竟然用了四组Action

第一步,让用户输入手机号和图形验证码,如果图形验证码正确,发送短信验证码

第二步,如果短信验证码正确,返回修改密码视图,让用户输入两次新密码

第三步,如果两次新密码一致,更新数据库保存的密码

最后,提示修改成功

b) 这儿也要注意防范一个漏洞:用户可能绕过第二步的短信验证码校验,直接请求第三步的视图,比如在地址栏输入……/User/ForgetPassword3,这样前面的图形验证码、短信验证码就成了摆设,所以在第三步需要判断第二步的短信验证码是否通过。

注:

课程内容来自如鹏网(www.rupeng.com),专注于大学生就业的在线教育平台;

ASP.NET MVC课程 http://www.rupeng.com/News/9/640.shtml

学习MVC之租房网站(八)- 前台注册和登录的更多相关文章

  1. 学习MVC之租房网站(六)-用户登录和权限控制

    在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...

  2. 学习MVC之租房网站(七)-房源管理和配图上传

    在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 ...

  3. 学习MVC之租房网站(九)-房源显示和搜索

    在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...

  4. 学习MVC之租房网站(二)-框架搭建及准备工作

    在上一篇<学习MVC之租房网站(一)-项目概况>中,确定了UI+Service的“双层”架构,并据此建立了项目 接下来要编写Common类库.配置AdminWeb和FrontWeb 一.编 ...

  5. 学习MVC之租房网站(五)-权限、角色、用户管理

    在上一篇<学习MVC之租房网站(四)-实现Service层并进行单元测试>中,记录了实现Service层并进行单元测试的过程,接下来该到"正题"-MVC了,也就是UI层 ...

  6. 学习MVC之租房网站(三)-编写实体类并创建数据库

    在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式 ...

  7. 学习MVC之租房网站(四)-实现Service层并进行单元测试

    在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且 ...

  8. 学习MVC之租房网站(十)-预约和跟单

    在上一篇<学习MVC之租房网站(九)-房源显示和搜索>完成了房源的显示.检索,然后是用户的预约看房,以及后台操作员对预约看房的跟单操作. 预约看房仅有将预约信息保存到对应表的操作,预约表有 ...

  9. 学习MVC之租房网站(十二)-缓存和静态页面

    在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用.发邮件,并将通过UEditor上传的图片保存到云存储.在项目的最后,再学习优化网站性能的一些技术:缓存和 ...

随机推荐

  1. vue2.0自定义指令的使用方法

    感觉2.0好坑啊,自定义指令和1.0完全不一样,并且文档写得也不太清晰,下面是我写得一个demo,希望帮助大家更好地理解自定义指令 <!DOCTYPE html> <html lan ...

  2. JQ实战一之烟花

    本次的效果大概为当用户点击网页时,网页下方弹出一个类似烟花的长条条,然后在桌面上散开以达成类似烟花的特效.话不多说先上图. 首先布局,布局很简单 <style> body { backgr ...

  3. 什么是测试开发工程师-google的解释

    什么是测试开发工程师-google的解释 “ 软件测试开发工程师[SET or Software Engineer in Test],和软件开发工程师一样是开发工程师,主要负责软件的可测试性.他们参与 ...

  4. hive 动态分区数设置

    当对hive分区未做设置时,报错如下: Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: ...

  5. JavaWeb总结(五)—Cookie

    一.会话 1.提出问题 HTTP协议是一种无状态的协议.Web服务器本身不能识别哪些请求是同一浏览器发出的,浏览器的每一次请求都是孤立的.即使HTTP1.1支持持续连接,但当用户有一段时间没有提交请求 ...

  6. Java面试题04-final关键字详解

    Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...

  7. 静态链表实现(A-B)+(B-A)【代码】

    -----------------------------------------------第一次发代码,写在前面------------------------------------------ ...

  8. MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用

    在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...

  9. ruby错误

    ActiveRecord::StatementInvalid in WelcomeController#index ActiveRecord::StatementInvalid in WelcomeC ...

  10. Extjs6(一)——用sencha cmd建立一个ExtJs小项目

    本文基于ext-6.0.0 一.用sencha cmd建立一个ExtJs小项目 首先,需要一个命令行工具.进入extjs所在目录. 然后,输入:sencha -sdk [ExtJs6.0文件夹地址] ...