[會員登入] 透過 E-Mail進行身份認證、啟用會員權利

这个问题是在论坛上看见的

其实,遇见问题的时候,我会建议初学者先想一下「流程」

您想怎么作?需要哪些步骤?

一旦「流程」清楚了

您是哪一步骤不会?.....大家可以给您帮助。

哪一段程序写不出来?找不到?.....也比较好解决。

直接拆解人家写好的范例,未必有帮助。

就跟 "写作文"一样,

拿到题目以后,你不去「想」,只参考人家的范例、现成的作品.....

最后写出来的东西,也就是人家的东西了(因为你被制约了,脑子被刚刚看的文章给盖过去了)

==== 文章开始 ==================================================================

以***符号标示的地方,就是我们要写ASP.NET程序的地方。

第一, *** 会员注册(新增)。

第二, *** 新增成功以后,发送E-Mail。

第三, 使用者收到E-Mail之后,点选信件里面的超链接(URL)。

第四, *** 连回我们的网站,启动会员权益、证明真有此人。

第五, *** 第二次发出E-Mail,恭喜对方加入网站 (完成!)

读者在其他网站注册会员时,应该也是类似的流程。

您接到E-Mail以后,会发现这个网址后面跟随了一段很长的乱码(编码)。

http://xxx.com/member.aspx?uid=xh3859dskfodfvervnepr

我们可以这样做,两种作法  任选其一

第一, 把您输入的 "账号" 或是 "E-Mail",透过 MD5或是 SHA1加密以后,放在网址后面送出去。

关于MD5与SHA1加密的部分,微软有提供现成的程序给我们呼叫。

我的书本下集也有讲到(ASP.NET专题实务(II) / 松岗出版

      https://msdn.microsoft.com/zh-tw/library/system.security.cryptography.md5(v=vs.110).aspx

第二, 注意!本范例采用此作法。

会员数据表(db_user)新增两个字段备用。

第一个「email_ID字段」使用「uniqueidentifer」数据型态

透过SQL指令内建的newid()函式就会自动产生guid。如下图。

当SQL Server 200x 新的 uniqueidentifier数据型态,遇见 SqlDataSource

第二个「approved字段」是Char(1)数据型态,默认值为n(英文小写)。

代表每一个新增的会员,在未经E-Mail启动、未确认身份以前,都无法登入系统。

本范例的四个流程,我们先来完成前面两个步骤的程序:

第一, *** 会员注册(新增)。

(1-1),您可以透过DetailsView或FormView控件来作会员新增(注册),新增一笔记录是这两大控件最强的功能!

(1-2),新增成功之后,前面两张图片的设定,数据库可以帮您产生guid。完全不用自己写程序就搞定了。

第二, *** 新增成功以后,发送E-Mail。

(2-1),发送E-Mail是一段固定的程序,几乎不用修改,直接套用即可。可以参阅 MSDN范例

    https://msdn.microsoft.com/zh-tw/library/system.net.mail.mailmessage(v=vs.110).aspx

第三, 使用者收到E-Mail之后,点选信件里面的超链接(URL)。

第四, *** 连回我们的网站,启动会员权益、证明真有此人。

第五, *** 发出第二封E-Mail,恭喜对方完成注册,欢迎加入网站。

上述流程中,"两次"发送E-Mail的程序几乎不用大改,直接套用就能运作。

如果您需要更多功能,微软MSDN网站上面都能查到。

如果您写的E-Mail程序无法发送讯息,可能有下列的因素:

  • 您的Mail Server没有在DNS里面注册为MX。因为垃圾邮件泛滥,大部分的Mail Server管理员都会拒绝接受来路不明的SMTP Server乱发信件。例如:Mail Server只有IP却没有Domain Name,或这台Server只有SMTP(只会发信)却没有POP3(没有收信机制),这种疑似垃圾信件都会被档下。
  • 您的网络不通,可能MIS人员设定防火墙档住。
  • Mail Server设定错误。您需要参考Windows Server或是Linux书籍来设定,我不是网管高手,所以帮不上忙。

*** ASP.NET发送 E-Mail的范例 ***

  • 您也可以参阅「MailDefinition类别」的作法。

[习题]透过 ASP.NET寄信(发信、发Mail),System.Net.Mail.MailDefinition 类别

第二个步骤发送的E-Mail,信件内容有一段长长的网址。

使用者点选后就会回到我们网站的 member.aspx这支程序。

可以启动会员权益、确认此会员真的存在......

例如  http://xxx.com/member.aspx?uid=xh3859dskfodfvervnepr

这支程序里面就可以透过Request[“uid”](如果是VB语法请写成Request(“uid”))。

一旦确认身份就可以启动这名会员的权益了,

请把会员数据表(db_user)里面的「approved」字段改成 y

注意!!撰写程序时,这部分请多用「参数」写法,以免不小心中了 SQL Injection(资料隐码)攻击

[FAQ] ADO.NET 参数写法 Parameter(避免SQL Injection数据隐码攻击)

本范例会用到的所有技巧、数据表的设定、程序代码 --

      在书本(ASP.NET专题实务 / 松岗出版。上下两集)都会提到。

      在课程中,也都会带您走过一遍。

      课程包含两种:远距教学(老师在现场上课)影片教学(事先录好影片,在家自修)

相关文章:

[非程序的问题] 写(ASP.NET)网页程序发送电子报?.....事情不是我们想得这么简单

[会员登入] 透过 E-Mail进行身份认证、启用会员权利的更多相关文章

  1. SQL Server 数据库身份认证以及包含数据库

    首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...

  2. Ubuntu16.04以root身份登入!

    首先以非root用户身份登入系统. 1,修改root密码:启动shell,随后在shell里面输入命令: sudo passwd root 最后输入root要使用的密码,需要输入两次,这样root密码 ...

  3. [ASP.NET MVC] ASP.NET Identity登入技术应用

    [ASP.NET MVC] ASP.NET Identity登入技术应用 情景 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.在ASP.NET I ...

  4. SpringBoot整合SpringSecurity简单实现登入登出从零搭建

    技术栈 : SpringBoot + SpringSecurity + jpa + freemark ,完整项目地址 : https://github.com/EalenXie/spring-secu ...

  5. ubuntu - 14.04,由于安装软件造成磁盘空间不足,无法登入Gnome解决办法!!

    刚才安装了半天软件,最后出现磁盘空间不足的问题,刚开始我还以为ubuntu和我开玩笑,随后我重新启动它才发现真不是开玩笑,我已经进不去Gnome桌面了!!! 解决办法: 1,以root身份进入shel ...

  6. 【转】vsftpd用户登入不进去问题

    实在是登陆不上... 我已经加了一个新的用户UID和GID都设置到1000以后 /etc/vsftpd.conf也加了local_enable=yes 以standalone模式运行. 重启服务器后, ...

  7. 微信小程序的登入与授权

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登录 小程序可以通 ...

  8. python selenium 多账户自动登入163邮箱

    pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...

  9. 手游聚合SDK开发之远程开关---渠道登入白名单

    白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...

随机推荐

  1. Netty入门系列(2) --使用Netty解决粘包和拆包问题

    前言 上一篇我们介绍了如果使用Netty来开发一个简单的服务端和客户端,接下来我们来讨论如何使用解码器来解决TCP的粘包和拆包问题 TCP为什么会粘包/拆包 我们知道,TCP是以一种流的方式来进行网络 ...

  2. android实现简单计算器

    前台代码如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  3. 最优化理论-Simplex线性规划

     Sorry,各位,现在这里面啥也没,之所以开这篇文章,是防止以后用得到:现在研究这些,总感觉有些不合适,本人还不到那个层次:如果之后有机会继续研究simplex-线性规划问题,再回来参考下面的链接进 ...

  4. 基于unity3d游戏的android版本逆向初探

    https://bbs.pediy.com/thread-212532.htm [文章标题]: 基于unity3d游戏的android版本逆向初探 [文章作者]: dreaman [作者邮箱]: [e ...

  5. JS 检查是否在微信浏览器

    /** * 检查是否在微信浏览器 * zengkai */ function isWeixinBrowser(){ var ua = navigator.userAgent.toLowerCase() ...

  6. 1、CreateJS介绍-EaselJS

    需要在html5文件中引入的CreateJS库文件是easeljs-0.7.1.min.js HTML5文件如下: <!DOCTYPE html> <html lang=" ...

  7. PAT甲级——1103 Integer Factorization (DFS)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90574720 1103 Integer Factorizatio ...

  8. [TCP/IP]TCP的三次握手和四次挥手

    概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 1.TCP连接建立--三次握手 几个概念: seq:序号,占4个字节,范围[0,4284967296],由于TCP ...

  9. css中的各类问题

    1.水平垂直居中 一.水平居中 (1)行内元素解决方案 只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可: .parent { text-align ...

  10. 从两个不同的ServiceProvider说起

    从两个不同的ServiceProvider说起 我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点.由于前面两章已经涵盖了依赖注入在管 ...