为WebApi项目增加用户注册功能
创建时间:2012年10月31日(星期三) 凌晨3:26 | 分类:Web演练 | 字数:3438  | 发送到我的Qzone | 另存为... | 打印 | 添加到日历
一、增加Filter目录:
Mvc4项目下,Filter文件夹下的InitializeSimpleMembershipAttribute.cs,其作用是用来为数据库创建用户、角色管理表格的。
移植到webapi项目,修改命名空间。
涉及到2个问题:
1、需要引用webmetrix.webdata程序集。在引用|添加引用|扩展,可以找到两个程序集,选择2.0版本。
2、需要models里的UsersContext类的声明
这意味着我们必须将mvc4的models里的AccountModels.cs文件迁移过来
编译通过之后,我们在Filter中InitializeSimpleMembershipAttribute.cs里面
public SimpleMembershipInitializer() 这个唯一的方法里,第一行设置断点,看看启动程序,会不会执行初始化工作。
结果,没有在此断点处停下。查看数据库,也没有新增用户管理的相关表格。
这里设置断点的目的是:
1、确保每次修改,都能正常运行
2、弄清初始化过程,是在首次程序启动的时候执行,还是在首次使用用户管理功能的时候执行。
3、我们先指定我们的连接字符串,替代DefaultConnection
WebSecurity.InitializeDatabaseConnection("WebLite", "UserProfile", "UserId", "UserName", autoCreateTables: true);
二、首先尝试 注册功能。
1、我们先将AccountController移植过来
显然,我们只关心注册功能,因此,修改注释掉类里的全部内容,仅保留注册方法的get、post方法。注释掉引起编译问题的语句。
编译一次,通过。
2、我们加入注册功能的View,同样移植过来
修改,编译通过
3、好了,我们现在就看看,Account控制器的注册方法能否正常运行。
启动程序,我们看到浏览器的地址栏为:http://localhost:15946
修改为:
http://localhost:15946/Account/Register
表示我们要执行AccountController的Register方法,注意这种访问是"get",该方法返回View(),表示按Mvc的约定返回同名的Register.cshtml视图。
4、很好,我们设在Filter中断点,其作用了:说明执行注册方法的时候,系统判断数据库中没有相应表格,准备自动创建表格。
选择继续,出现异常:

5、这个异常什么意思?
首先,找不到连接字符串DefaultConnection,其次,这处异常出现在Web.config的45行,信息如下:
{"在应用程序配置中找不到连接名称“DefaultConnection”,或者连接字符串为空。 (E:\\WebLite\\WebLite\\web.config line 45)"}
再次“继续",页面上更为清晰:
行 43:     <membership defaultProvider="DefaultMembershipProvider">
行 44:       <providers>
行 45:         <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
行 46:       </providers>
行 47:     </membership>

注意这是WebApi为了使用传统的membership认证方式而预先准备的。
我们显然不会使用这种方式,那么注释掉。
重新调试,继续异常:
"The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588
"未启用角色管理器功能。"
继续:页面呈现的错误信息更明显
6、那么我们跟踪一下
重新运行,到断点处,每次按F10执行一条。
执行完if (!context.Database.Exists())的时候,问题出现了:
我们鼠标点Database,发现其连接字符串为:
Data Source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|DefaultConnection.mdf;Initial Catalog=DefaultConnection;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE
问题出在var context = new UsersContext()这里,创建的Contex....使用了默认的连接字符串
转到userContext处,用”转到定义"
嗯:
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}

7、问题继续出现:没有启用角色管理器
单纯从这点来看,明显的.....我们会考虑什么? 配置文件中的 enable role?
事实上,在配置文件中加入:
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>

强迫执行----会启用角色管理等等
现在继续出现问题----那是页面的
8、简单的修改注册页面
将最下面一行注释掉
@*@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}*@

9、运行
http://localhost:15946/Account/Register
可以正常的注册用户

转载于:https://www.cnblogs.com/by2028/archive/2012/10/31/2747355.html

为WebApi项目添加注册功能:问题与解决的思维流程相关推荐

  1. web前端技术分享:管理系统全栈项目之注册功能

    这篇文章小千简单给同学们介绍一个网站注册功能的项目和代码,因代码放入网页中会乱码所以以图片的形式加入. 开发流程: 1.先将页面的HTML+CSS做好,我们先看到页面效果 2.当我们点击我们的超链接的 ...

  2. 02.javaWeb旅游网小项目【注册功能】

    用户注册模块 1.实现注册功能 1)注册功能(前台页面) 前台注册页面注册校验成功 使用异步交互(JQuery-ajax) 点击注册 将当前提交内容从后台数据库查询是否存在 $(function () ...

  3. 微服务电商实战(十一)搭建vue项目对接注册登陆接口,解决跨域问题,使用七牛云实现头像上传

    一.简介 node.js版本:v12.16.3 node.js下载 vue官网教程 iview介绍 上传头像接口,图片存储在七牛云中,注册并实名认证之后可以免费使用 以下会描述使用vue搭建项目框架的 ...

  4. 系统更新win11 后,右键没有显示git,添加注册表选项的解决办法

    1.点击windows图标,输入:regedit 打开注册表 2.打开注册表,位置:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\open in g ...

  5. 会议室怎么添加预约功能?快速解决会议室使用效率问题

    几个操作步骤即可快速创建一个会议室预约小程序,门店-服务-员工-装修. 提供会议室分时段预约设置,避免会议时间冲突,提高会议室使用效率. 支持系统自动受理预约&人工审核预约两种方式,还有会员管 ...

  6. javaweb开发的仿推特项目之登录注册功能

    博主最近学习一个仿推特javaweb项目,其采用Jsp+Servlet的方式进行设计,MySQL数据库,Tomcat8服务,界面上十分美观,功能也较为健全,给大家分享一下: 项目地址 登录界面: 核心 ...

  7. BBS(仿博客园系统)项目01(项目分析、表结构设计、注册功能实现)

    摘要: 需求分析 表结构设计 注册功能实现 一.需求分析: 项目需求(产品经理.架构师.开发组组长与客户谈该项目相关要求) 项目设计 (架构师需要思考:框架选择,数据库选择,主要功能模块,报价:包括工 ...

  8. 【SDU项目实训2019级】前端和后端实现手机短信验证码登录和注册功能

    目录 1.前端登录页面手机号验证码登录页面: 2.前端获取验证码的函数: 3.后端获取验证码代码 4.前端登录的函数: 5.后端登录的实现 6.注册功能前后端的实现 1.前端登录页面手机号验证码登录页 ...

  9. 交友项目【手机号登录注册功能】实现

    目录 1:用户登录 1.1:接口文档 1.2:API接口定义 1.3:Dubbo服务提供者 配置文件 启动引导类 数据访问层 API接口实现 1.4:Dubbo服务消费者 UserController ...

最新文章

  1. python编译环境搭建_python开发环境搭建
  2. 清华《人工智能之认知图谱》:中美高水平学者数量领跑全球
  3. hdu - 1072 Nightmare(bfs)
  4. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)
  5. docker环境下指定jvm参数
  6. Transformation HDU - 6726(百度之星复赛2019 dfs)
  7. 85后博士不到一年发10篇顶刊!共发SCI50多篇
  8. Java SE 8 docs:Static Methods、Instance Methods、Abstract Methods、Concrete Methods和Fields
  9. sp.net MVCJQuery 应用(表单验证)
  10. docker--强制删除none的image镜像
  11. django manage.py model 删除表后怎么重新生成数据库表
  12. java list 模拟查询_java 模拟简单搜索
  13. 2020计算机组成原理课程设计(桂电)
  14. Ubuntu18中添加中文输入法
  15. python怎么打开h5文件_Python 操作 HDF5文件
  16. Docker 镜像的存储机制
  17. 【学习日记2023.4.25】之 前后端分离_前端工程化_Vue组件库Element_Vue路由_打包部署
  18. 大数据与应用统计学的区别与联系
  19. 【刷机】小米降级刷机 线刷 图解 MIUI降级刷机
  20. android系统刷机,安卓手机刷机完全攻略 从此不再怕刷机

热门文章

  1. 论文笔记:SIFT(Scale-invariant feature transform 尺度不变特征变换)
  2. Golang配合QQ机器人获取Pixiv ea7e6c5a5f673669f0d56d8f39056eae每日列表并发送涩图(未完)
  3. Apollo第二讲—apollo自动驾驶调试及仿真实践
  4. 从Qualcomm技术看loT未来发展方向
  5. STM32 烧录程序后无法在内部FLASH保存数据问题解决
  6. 4.12leetcode468. 验证IP地址
  7. 10 个免费的网络监控工具
  8. Java+JSP政府机关公文文档收发管理系统(含源码+论文+答辩PPT等)
  9. Manjaro KDE 18.1.2踩坑指南(含双显卡黑屏解决方案)
  10. 老照片修复清晰有什么办法?教你修复老照片清晰度