forms认证的学习(2)
来源:互联网 发布:政务软件 咨询顾问 编辑:程序博客网 时间:2024/05/04 20:49
看c#看不懂了,看forms验证的第4篇也是迷迷糊糊的,懂了它的意思,但是我实现起来就打不到效果,还报了错误。验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。估计是我在machine.config中配置的秘钥与页面的算法不同,我把machine里的删除了还是报错,参照网上的说法把web.config里的<page>加入<pages enableEventValidation= "false " viewStateEncryptionMode = "Never " / > 同样没有解决。不搞这个了,先放下。 他是这样实现单登陆跨域名的 不管是从哪里登陆的,都同一把用户名与密码交给通一个页面A进行处理,在A页面处理过程中,它会依次把几个网站的cookie都发放给用户,cookie都是使用的第一次加密后的字符串,(这个在传的过程中好慢,我机子上都用了好久还打不开),这样不同域名的网站也就同时在客户端存入了cookie,这个时候用户如果从一个网站到另外一个网站也不需要登陆了。作者起的名字叫 天女散花,确实不错。第2种办法叫做后羿射日 就是增加一个跳板B,上面放置超级连结,在A页面处理完cookie验证(只处理一个网站的)后,直接跳转到B页面上,让用户选择登陆哪个站点,如果选择了另外一个网站,在进行cookie的发放。等于让用户选择登陆哪个站点了。
感觉作者的技巧好高,在几个页面间进行跳转的代码也写的不错!
string from = Request["FromUrl"]; //起始 URL 路径
string next = Request["NextUrl"]; //还需要跳转的 URL
string key = Request["CookieTicket"]; //已加密的 Cookie 文本
if(key != null && key !="")
{
System.Web.HttpCookie ck = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,key);
ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;
ck.Expires = System.DateTime.Now.AddYears(100);
Response.Cookies.Add(ck); //将传过来的已加密的身份验证票添加至客房端
string url = next.Split(';')[0]; //从 URL 中拆分出将要跳转的下一张页面
next = next.Replace(url+";",""); //带入下一轮跳转的字串
if(url!="")
{
//跳至下一页面 Response.Redirect(url+"?CookieTicket="+key+"&FromUrl="+from+"&NextUrl="+next);
}
else //已没有下一页面可供跳转
{
Response.Redirect(from); //回到起始页面
}
//页面常量 allLoginUrl 存放所有站点的 AddCookie.aspx 的 URL,注意以 ; 分隔 public const string allLoginUrl = "http://localhost/FormTest/Public/AddCookie_A.aspx;" +"http://127.0.0.1/FormTest/Public/AddCookie_B.aspx;" +"http://My_Computer_Name/FormTest/Public/AddCookie_C.aspx;"; 偶已在上面讲述了,如何点击 Login.aspx 中的登录按钮Btn_Login将用户名与密码提交给 LoginTransfer.aspx ,并执行LoginTransfer.aspx 中的Btn_Login_Click 事件。 private void Btn_Login_Click(object sender, System.EventArgs e) { string from = Request["FromUrl"]; //起始 URL 路径 string next = this.allLoginUrl; //由于控件 ID 相同,所以此处得到的是由 Login.aspx 提交过来的用户名与密码 if(this.Txt_LoginName.Text=="Admin"&&this.Txt_Password.Text=="123456") { System.Web.Security.FormsAuthenticationTicket tk = new System.Web.Security.FormsAuthenticationTicket(1,"Admin", System.DateTime.Now, System.DateTime.Now.AddYears(100),false,"测试用户数据" ); string key = System.Web.Security.FormsAuthentication.Encrypt(tk); //得到加密后的身份验证票字串 string url = next.Split(';')[0]; //从 URL 中拆分出将要跳转的下一张页面 next = next.Replace(url+";",""); //带入下一轮跳转的字串 Response.Redirect(url+"?CookieTicket="+key+"&FromUrl="+from+"&NextUrl="+next); //跳至下一页面 } 慢慢研究了!
- forms认证的学习(2)
- forms认证的学习
- forms认证
- forms认证
- 设置Forms认证的cookie失效时间
- 简单的ASP.NET Forms身份认证
- 简单 Forms 身份认证
- Forms身份认证
- asp.net forms认证
- MVC5 Forms 认证登录
- 一个简单的ASP.NET Forms 身份认证
- 一个简单的ASP.NET Forms 身份认证
- 一个简单的ASP.NET Forms 身份认证(转)
- 一个简单的ASP.NET Forms 身份认证
- 一个简单的ASP.NET Forms 身份认证
- ASP.Net 身份验证方法 基本的Forms认证步骤
- asp.net 写一个完整的 Forms身份认证
- Asp.net Forms认证流程
- IM 是SaaS的最佳Portal
- 一个用FTP批量上传文件的perl脚本,支持目录上传
- 大众的过去和现在
- java 载入图片的几种常用方法
- 运用ajax技术的树型菜单
- forms认证的学习(2)
- 贴棵简单的AJAX树形折叠菜单
- 基于Java Socket的文件UpLoad代码
- JavaScript笔记(继承)
- SVG学习笔记(2)-认识DOM
- 再,叹!
- TCP/IP学习笔记之七 --- IP选路
- Funny explanation for WIFE and HUSBAND
- Hadoop Distributed File System (HDFS)