讨论:FormsAuthentication.SetAuthCookie有BUG?

7707 2006-06-30 09:45:18
SEE: http://community.csdn.net/Expert/topic/4851/4851496.xml?temp=.6346094

最初认为代码有问题,把SDK中带的例子运行一遍,也是不行.
折腾了两天,终于搞定.我认为是2.0改了SetAuthCookie默认的50年,替换为web.config中的timeout值,也就是说SetAuthCookie("user",true)保存30分钟,关闭浏览器不丢失.false则关闭浏览器丢失. 但帮助文档中为何找不到只言片语?另外网上上狗一下,大把文章说SetAuthCookie默认50年...

但愿我的经历对各位有所帮助

继续郁闷,继续散分

如下代码正确运行:
protected void loginButton_Click(Object o, EventArgs e)
{
if (!Valid())
return;
User user = new User();
user.IP = Context.Request.UserHostAddress;
user.Username = username.Text.Trim();
user.Password = password.Text.Trim();

int valid = UserClass.Login(user);

if (valid > 0)
{
DateTime outtime = DateTime.Now.AddMinutes(20);
if (autoLogin.Checked)//自动登录
outtime = DateTime.Now.AddYears(100);//存 TMD 100年
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
valid.ToString(),//用户ID
DateTime.Now,//票证发出时间
DateTime.Now.AddYears(50), // 过期日间
false, // 跨浏览器保存
user.IP,//用户IP
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);//加密
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
authCookie.Secure = false;//非HTTPS
Context.Response.Cookies.Add(authCookie);

//FormsAuthentication.SetAuthCookie(valid.ToString(), autoLogin.Checked);
//FormsAuthentication.RedirectFromLoginPage(valid.ToString(), autoLogin.Checked);

if (ToaspContext.Current.ReturnUrl != String.Empty)
Context.Response.Redirect(ToaspContext.Current.ReturnUrl);
Context.Response.Redirect(Globals.ApplicationVRoot);

}
else if (valid == -1)
{
MessageBox.Show(username, Res.Get("Login_UsernameNotFound"));
}

else if (valid == -2)
{
MessageBox.Show(password, Res.Get("Login_PasswordFailure"));
}
}
...全文
633 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
7707 2006-07-03
  • 打赏
  • 举报
回复
7707 2006-06-30
  • 打赏
  • 举报
回复
嗯,是修改了.不过SDK上并没提到修改,所以我一直认为自己代码有误或IIS或Framework有问题
两个偶像同时出现在偶的贴子里,嘿嘿,虚荣心得到了空前满足
孟子E章 2006-06-30
  • 打赏
  • 举报
回复
asp.net2.0是做了修改的
7707 2006-06-30
  • 打赏
  • 举报
回复
谢谢两位老大!

早说啊,我也不至于这么郁闷了.:)
孟子E章 2006-06-30
  • 打赏
  • 举报
回复
asp.net有描述:


浏览器负责管理用户系统上的 Cookie。Cookie 通过 HttpResponse 对象发送到浏览器,该对象公开称为 Cookies 的集合。可以将 HttpResponse 对象作为 Page 类的 Response 属性来访问。要发送给浏览器的所有 Cookie 都必须添加到此集合中。创建 Cookie 时,需要指定 Name 和 Value。每个 Cookie 必须有一个唯一的名称,以便以后从浏览器读取 Cookie 时可以识别它。由于 Cookie 按名称存储,因此用相同的名称命名两个 Cookie 会导致其中一个 Cookie 被覆盖。

还可以设置 Cookie 的到期日期和时间。用户访问编写 Cookie 的站点时,浏览器将删除过期的 Cookie。只要应用程序认为 Cookie 值有效,就应将 Cookie 的有效期设置为这一段时间。对于永不过期的 Cookie,可将到期日期设置为从现在起 50 年。

saucer 2006-06-30
  • 打赏
  • 举报
回复
http://pluralsight.com/blogs/keith/archive/2006/05/24/25023.aspx

the best way is to look at the code with Reflector
Web应用模式在开发Web应用中,有两种应用模式:前后端不分离在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。 前后端分离在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。作为一名全栈项目的开发者, 开发标准的 REST 接口,需要用到 Django Rest framework。Django REST framework是构建WebAPI的强大而灵活的工具包。对于开发者来说这个WebAPI来说极具可用性。认证策略(Authentication)包括包OAuth1a和OAuth2。串行化(Serialization)同时支持ORM和non-ORM数据。可定制化的基于函数的常规视图,不需要更多的其他的功能。众多的文件以及社区大力支持,被国际认可的公司所使用和信任,包括Mozilla, Red Hat, Heroku, and和Eventbrite. 

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧