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

时间: 2024-10-06 04:26:23

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

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

首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 1 select * from sys.sql_logins 管理员可以直接修改密码,但无法知晓原有密码原文,SQL Server使用混淆算法来保护安全性不如Windows 身份认证, Windows认证模式 首先分为本机账号与域账号 SQL Server 将认证和授权分散给了不同的对象来完成,SQL Server 的“登入名”(Login)用于认证,连接SQL Server 的SQ

鸟哥私房菜基础篇:首次登入與線上求助习题

猫宁!!! 参考链接:http://linux.vbird.org/linux_basic/0160startlinux.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-简单的查询一下,Physical console / Virtual console / Terminal 的说明为何? console 有『控制台』的意思在里面,因此你可以这样看的: 实体控制台:实体的荧幕.键盘.鼠标等界面,让妳可以使用该配备来操作系统的环境,就称为实体控制台 (Physical console) 虚

linux下查看用户登入系统相关命令及编写脚本(七)

查看用户登入系统日志 1.w 显示谁登入并正在做什么事 2.who 显示谁登入 -r:显示系统运行级别 3.sleep 睡眠命令(sleep 5 睡眠5秒后醒来) 4.whoami 显示用户名或UID 5.last:显示/var/log/wtmp文件,显示用户登录历史及系统重启历史 -n 3: 显示最近3次的相关信息 6.lastb:显示/var/log/btmp文件,显示用户错误的登录尝试 -n 3: 显示最近3次的错误的登录尝试 7.lastlog: 显示每一个用户最近一次的成功登录信息:

配置路由器/交换机的Telnet登入

[实验名称] 在路由器上配置Telnet. [实验目的] 掌握如何在路由器上配置 Telnet,以实现路由器的远程登录访问. [背景描述] 路由器用于连接多个子网时,通常放置位置都相距较远,察看和修改配置都比较麻烦, 此时如果可以远程登录到路由器上进行操作,将能够大大降低管理员的工作量. [需求分析] 需要掌握如何配置路由器的密码,如何配置 Telnet 服务,以及如何通过 Telnet 远程登录 路由器进行操作的方法. [实验设备] 路由器(带串口)     2台 V.35 DCE/DTE 线

Citrix用户登入到用户拿到桌面流程

现在很多工程师在部署Citrix项目中都会开启HTML5,用户就不需要安装Receiver,通过Web直接就可以登入到虚拟桌面,一般项目中从用户打开网页登入用户名拿到自己办公桌面一般时间都在60S内(这个是保守的,我自己做的项目都在30s-40s用户就可以拿到桌面).就在这短暂的一分钟内,我们应该清楚理清其中的过程,以便用户在出现登入故障的时候我们可以依据提示或者报错,准确的定位所存在的问题. 下面就是我根据自己在Citrix原厂培训和项目中的 一些总结. 1.首先用户通过网页访问SF站点,将用

Nginx web 网站登入验证

在一些业务不能够直接提供给外部人员查看,只能指定某些人来查看.为了安全起见,限定访问ip,外加在页面上做个简单的登入页面认证. 操作很简单,在这里做个简单的记录,以便后续查看回忆. 操作系统CentOS 7.2 nignx 1.10.1 首先我们用Nginx提供HTTP的Basic Auth功能,配置了需要输入的用户名和密码,才能访问网站. 我们使用htpasswd来生成密码信息,就先要安装httpd-tools,因在httpd-tools中包含了htpasswd命令 我们要用在httpd-to

关于如何SQL Server不能使用ip和sa进行登入的步骤

第一:关于本地IP不能登入(主要原因是远程服务器未开启) 注意细节:确定端口是否拼通:telnet IP 端口 (如果报错为不是内部或外部命令,也不是可运行的程序) 解决办法: 1:打开控制面板-------->程序和功能 --------->打开或关闭Window功能------->选择Telnet客户端-------->点击完成即可:然后测试 telnet ip 端口 2:注意是否防火墙阻止,需要关闭防火墙连接或者允许sql远程通过: 3:查看点击配置工具---->sql

关于Oracle数据库sys用户登入的解惑

一直有个问题困扰,在window系统安装Oracle后,打开sqlplus,可以直接用conn / as sysdba登入,无需用户名和密码,如图: 然而,我们还可以这样,con sys/sadfa as sysdba,密码随便输入,还是可以登入. 然而,我们还可以这样,用户名和密码随便输入,还是可以登入. 到这里,不了解同学,是不是觉得,orale疯了,这么弱的安全机制.还可以这样玩.其实,这里的原因是这样的. 验证登入数据库有2种机制,1:用户名和密码验证(输入正确的用户名和密码),2:是主

为何SQL Server登入账号的Password Hash值变动了呢?

Rock日常管理手上的SQL Server会特别注意一点,就是Logins的帐密保存 因为万一哪一天某台SQL Server无预警挂点,所有的帐密该如何快速建立呢? 当然可以利用还原master的方式到新机上,这样就可以一并还原所有帐密. 而第二层保险就是我会每一天搜集所有SQL Server的Logins的Sid及Password Hash值,一但遇到问题也可以透过这些搜集的数据来重建账密. 而这些数据搜集附加价值就是我也可以每一天做数据差异比对,就可以知道哪一 些账号的密码及设定值被异动过,