在上一篇<学习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. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(三) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  2. AtCoder Beginner Contest 055题解

    A.当a=1就把a改成14,b=1就把b改成14,然后比较a,b大小即可. #include <iostream> #include <algorithm> #include ...

  3. Android-----js和android的互调

    Android-----js和android的互调   http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/We ...

  4. git clone时出现 error:inflate:data stream error(incorrect data check)

    git clone时出现 error:inflate:data stream error(incorrect data check) fatal:serrious inflate inconsiste ...

  5. SpringBoot-SpringMvc的Interceptor拦截器配置

    Interceptor拦截器实现对每一个用户请求处理前后的业务处理,比如我们需要对用户请求进行响应时间的记录,需要记录请求从开始到结束所耗的时间,这时我们就需要用到拦截器了 下面我们以记录请求处理时间 ...

  6. Java基础学习(一)—方法

    一.方法的定义及格式 定义: 方法就是完成特定功能的代码块. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2){ 函数体; return 返回值; } 范例1: 写一个两个 ...

  7. GPU加速有坑?

    大多数人都知道有动画的地方可以使用GPU来加速页面渲染. 例如,做优化的时候,将使用left和top属性的动画修改成使用transform属性的CSS动画.或者听到别人教你使用transform:tr ...

  8. jmeter JDBC 连接数据库

    1.添加JDBC Connection Configuration 2.添加JDBC Request 3.添加查看结果树 4. 设置下列参数:Database URL:jdbc:mysql://hos ...

  9. Spring-quartz 可传参(包括service注入)任务调度 多个任务调度

    1 JobDetail 注意:一个JobDetail中 只能触发一个方法,如果要调度多个任务 需要有多个job类! 普通任务:总调度(SchedulerFactoryBean)--> 定时调度器 ...

  10. Intellij Idea 用Maven 创建Hibernate 项目

    第一步:创建maven项目 2. 3. 4.第三步保存之后进行下一步 到此点击finish maven项目创建成功,点击完成后会进行一系列jar包的下载 maven 仓库的默认存储位置 第二步:连接数 ...