none
如何让浏览器记住用户的登录状态? RRS feed

  • 问题





  • 这是个我以前问过的问题,又发现点新问题,想提上来问一下:

    原帖子:http://social.microsoft.com/Forums/zh-CN/295/thread/27672977-5537-49f1-a666-13e4ef0610c4

    我在做练习时由于总需要调试,每次关闭浏览器后重新打开,或者打开一个与当前Session无关的页面,就得重新输入用户名和密码

    我认为在下边标记@13@20处改变true,false(<asp:CheckBox ID="Persist" runat="server" Text="Remember me?" />)应该能有用,可是没好使!!不理解是为什么?

    我看在 Global.asax 文件里不是已经从cookies中建立了一个用户了么??

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

    <script runat="server">

     

      protected void Button1_Click(object sender, EventArgs e)

      {

        String username = UserName.Text;

     

          if (username.EndsWith("mxh", StringComparison.InvariantCultureIgnoreCase) && Password.Text.EndsWith("mxh", StringComparison.InvariantCultureIgnoreCase))

          {

            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,//票证的版本号

            username,//与身分验证票关联的用户名

            DateTime.Now, //票证发出时的本地日期和时间

            DateTime.Now.AddMinutes(30),//票证过期的本地日期和时间

    @13 -- true,// 如果票证存储在持久性cookie中(跨浏览器会话保存)则为 true 否则为false 如果票证储存在URL中,将忽略此值

            "admin|reader|editor",//储存在票证中持定的用户信息

            FormsAuthentication.FormsCookiePath//票证储存在cookie中的路径

            );

            //如果 forms 元素的 protection 属性设置为 All 或 Encryption,则窗体身份验证使用 Encrypt 方法对窗体身份验证票进行加密和签名。

            string encTicket = FormsAuthentication.Encrypt(ticket);

            Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

     @20 -- Response.Redirect(FormsAuthentication.GetRedirectUrl(username,true));

          }

          else

          {

            Response.Write("密码不正确");

          }

      }

    </script>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

         用户名:<asp:TextBox ID="UserName" runat="server" />mxh <br />

      密码:<asp:TextBox ID="Password" TextMode="password" runat="server" />mxh<br />

      <asp:Button ID="Button1" Text="登录" runat="server" onclick="Button1_Click" />

        </div>

        </form>

    </body>

    </html>

    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年3月25日 18:14

答案

  • <forms name="admin" loginUrl="Login.aspx" protection="All" path="/">
    这里需要设置 path属性,
    另外,使用
    FormsAuthentication.RedirectFromLoginPage(username, true);

    而不是使用
    Response.Redirect(FormsAuthentication.GetRedirectUrl(username,true));

    转向即可

    孟宪会
    • 已标记为答案 lkf18 2009年3月26日 9:26
    2009年3月26日 1:12
    版主