• [会员登入] 透过 E-Mail进行身份认证、启用会员权利


    [會員登入] 透過 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)网页程序发送电子报?.....事情不是我们想得这么简单

  • 相关阅读:
    storm中DAU实时计算方案
    冒泡排序
    跨域
    关于java面试题
    vue+npm+Element插件+路由
    Android云端APP
    js图片预览带进度条
    jQuery上传文件显示进度条
    SSM+form表单文件上传
    SSM批量添加数据
  • 原文地址:https://www.cnblogs.com/mis2000lab/p/Login_email_aspnet_webForm.html
Copyright © 2020-2023  润新知