使用Forms Authentication实现用户注册、登录 (二)用户注册与登录
2 <asp:LinkButton ID="btnLogin" runat="server" Text="登录" OnClick="btnLogin_Click"></asp:LinkButton> |
3 <asp:HyperLink ID="lnkRegister" runat="server" NavigateUrl="~/register.aspx" Text="注册"></asp:HyperLink>
4 </asp:Panel>
5 <asp:Panel ID="pnlLoggedin" runat="server">
6 欢迎您,<asp:Label ID="lblUserName" runat="server"></asp:Label>!
7 [<asp:LinkButton ID="btnLogout" runat="server" Text="注销"
8 onclick="btnLogout_Click"></asp:LinkButton>]
9 </asp:Panel>
10 <asp:Panel ID="pnlNavigate" runat="server">
11 <asp:HyperLink ID="lnkDefault" runat="server" NavigateUrl="~/default.aspx" Text="首页"></asp:HyperLink> |
12 <asp:HyperLink ID="lnkTest" runat="server" NavigateUrl="~/test.aspx" Text="测试页"></asp:HyperLink>
13 </asp:Panel>
14
2 {
3 // 判断用户是否已登录。
4 if(HttpContext.Current.User.Identity.Name == "")
5 {
6 // 用户未登录。
7 pnlAnonymous.Visible = true;
8 pnlLoggedin.Visible = false;
9 }
10 else
11 {
12 // 用户已登录。
13 pnlAnonymous.Visible = false;
14 pnlLoggedin.Visible = true;
15
16 lblUserName.Text = HttpContext.Current.User.Identity.Name;
17 }
18 }
2 {
3 UserObject user = new UserObject();
4 user.Name = userName;
5 user.PasswordSalt = GenerateSalt();
6 user.PasswordHash = EncodePassword(password, user.PasswordSalt);
7
8 DataAccess.AddUser(user);
9 }
10
2
3 static string EncodePassword(string password, string salt)
4 {
5 byte[] src = Encoding.Unicode.GetBytes(password);
6 byte[] saltbuf = Convert.FromBase64String(salt);
7 byte[] dst = new byte[saltbuf.Length + src.Length];
8 byte[] inArray = null;
9 Buffer.BlockCopy(saltbuf, 0, dst, 0, saltbuf.Length);
10 Buffer.BlockCopy(src, 0, dst, saltbuf.Length, src.Length);
11
12 HashAlgorithm algorithm = HashAlgorithm.Create(PasswordHashAlgorithmName);
13 inArray = algorithm.ComputeHash(dst);
14
15 return Convert.ToBase64String(inArray);
16 }
17
18 static string GenerateSalt()
19 {
20 byte[] data = new byte[0x10];
21 new RNGCryptoServiceProvider().GetBytes(data);
22 return Convert.ToBase64String(data);
23 }
2 <tr><td>用户名:</td><td><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox></td></tr>
3 <tr><td>密码:</td><td><asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox></td></tr>
4 <tr><td colspan="2"><asp:Button ID="btnOK" runat="server" Text="确定"
5 onclick="btnOK_Click" /></td></tr>
6 </table>
7 <asp:Label ID="lblMessage" runat="server"></asp:Label>
2 {
3 try
4 {
5 Membership.CreateUser(txtUserName.Text, txtPassword.Text);
6
7 lblMessage.Text = "用户创建成功!";
8 }
9 catch(Exception ex)
10 {
11 lblMessage.Text = "错误:" + ex.Message;
12 }
13 }
14
2 {
3 // 获取用户。
4 UserObject user = DataAccess.GetUserByName(userName);
5 if(user == null)
6 throw new ArgumentException("用户不存在!", "UserName");
7
8 // 检查密码是否正确。
9 string pwdHash = EncodePassword(password, user.PasswordSalt);
10 if(pwdHash != user.PasswordHash)
11 throw new ArgumentException("密码错误!", "Password");
12
13 // 设置安全Cookie并进行重定向。
14 FormsAuthentication.RedirectFromLoginPage(userName, rememberMe);
15 }
2 <tr><td>用户名:</td><td><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox></td></tr>
3 <tr><td>密码:</td><td><asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox></td></tr>
4 <tr><td colspan="2">
5 <asp:Button ID="btnLogin" runat="server" Text="登录" onclick="btnLogin_Click" />
6 <asp:CheckBox ID="chkRememberMe" runat="server" Text="记住我" />
7 </td></tr>
8 </table>
9 <asp:Label ID="lblMessage" runat="server"></asp:Label>
2 {
3 try
4 {
5 Membership.Login(txtUserName.Text, txtPassword.Text, chkRememberMe.Checked);
6 }
7 catch(Exception ex)
8 {
9 lblMessage.Text = "错误:" + ex.Message;
10 }
11 }
12
2 {
3 FormsAuthentication.SignOut();
4 Response.Redirect(Request.RawUrl);
5 }
使用Forms Authentication实现用户注册、登录 (二)用户注册与登录相关推荐
- 使用Forms Authentication实现用户注册、登录 (三)用户实体替换
使用Forms Authentication实现用户注册.登录 (三)用户实体替换 收藏 IPrincipal和IIdentity 通过查阅文档,我们可以看到HttpContext.User属性的类型 ...
- APP新用户注册、手机号绑定、用户登录验证新方式——一键登录(免密登录)验证方式新趋势
传统的手机APP应用注册通常需要用户输入用户名,填写用户密码,同时通过获取验证码绑定手机号.用户一旦注册后再次登录传统的方式都是提供用户名加密码,或者凭手机验证码登录.当然现在许多APP为了获取更多的 ...
- drupal用户注册邮件smtp及社会化登录模块安装
一直没有开放评论,怕的是垃圾评论和机器人注册,现在我想开启游客评论功能并尽可能的防止垃圾评论.一是增加QQ等开放性登录功能,二是注册需电子邮件验证,三是注册登录发表评论时要求验证码. drupal社会 ...
- 智能玩具 数据采集 首页展示 注册 登录 自动登录 二维码图片
玩具需求分析 1.语音实时通讯 - 让玩具成为孩子与父母之间沟通的桥梁 分支 建立幼儿社交圈2.积极正面幼教内容 - 让玩具能够播放 父母选定的儿歌,故事,百科,英语- 通过语音识别内容名称 玩具可以 ...
- 使用Forms Authentication 身份验证 之 Basic Knowledge
与Forms Authentication相关的配置 在web.config文件中,<system.web>/<authentication>配置节用于对验证进行配置.为< ...
- ASP.NET 中的表单身份验证(Forms Authentication)
表单验证可以通使用一个登录页面验证用户的用户名和密码.未通过验证的请求会被重定向到登录页面,要求用户输入其凭据信息(同常是用户名和密码).如果请求通过验证,系统将签发一个身份验证票据,在用户会话期间, ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战二:简易登录+找回密码
在移动互联网时代,用户是每家IT企业最宝贵的资源,对于App而言,吸引用户注册并登录是万分紧要之事,因为用户登录之后才有机会产生商品交易.登录校验通常是用户名+密码组合,可是每天总有部分用户忘记密码, ...
- Spring Cloud OAuth2 扩展登录方式:帐户密码登录、 手机验证码登录、 二维码扫码登录
本文扩展了spring security 的登录方式,增长手机验证码登录.二维码登录. 主要实现方式为使用自定义filter. AuthenticationProvider. AbstractAuth ...
- Forms Authentication timeout and Expiration
本文不涉及session的timeout 在Forms Authentication里有两处涉及timeout:forms authentication ticket 与 forms authenti ...
最新文章
- redis学习笔记---redis的哨兵Sentinel
- 一分钟详解OpenCV之相机标定函数calibrateCamera()
- hdu 1872(看病要排队)(优先队列)
- 关于Opencv2.4.x中stitcher类的简单应用
- es6 数组去重,数组里面的对象去重
- IAR教程之IAR安装
- msvcr120d.dll 丢失
- 读取Java源文件中字段的注释当做Swagger的字段描述
- 玉米社:SEM竞价推广预算设置方法
- java五子棋网络版源码_网络版五子棋的java源代码.pdf
- 微信小程序 - 小程序分享转发
- 菲尔兹奖-历届获得者
- Java中的四种XML解析方式(一)
- rich-text 富文本标签
- 我的java开发及桌面工具集合分享
- uboot启动参数详解和一些细节
- 毕业设计-基于深度学习的图像去噪方法研究
- 客户关系管理系统PRD编写
- WordPress后台上传文件大小受限制解除方法
- /wp-cron.php_通过CRON / PHP快速检测被黑客入侵的文件:SuperScan
热门文章
- String.Format()方法
- Jmail的主要参数列表
- 如何在域控制器上安装asp.net?
- 【经验】提高github的下载(克隆)速度
- 推荐本人微博及浅谈发博原则
- uniapp 鸿蒙,关于前端:uniapp项目安装运行操作手册
- xhr请求python_python爬取boss直聘职位数据,并保存到本地
- android软件安全权威指南 pdf_AV-TEST 发布 2019 最佳 Android 安全软件榜单
- mysql 应用前景_图数据库在企业应用中前景如何,相比关系型数据库有哪些优势?...
- mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题