none
Asp.net 的身份验证以及长时间保存口令问题? RRS feed

  • 问题

  • 在我的映象中,客户端的身份Cookie缺省是永久保存的,但在服务器端,在 <sessionState mode="InProc"  cookieless="false"  timeout="240"/> 情况下,
    在服务器进程重启后,就会丢失会话, 从而要求用户重新登录,这在共享主机情况下,I是会经常出现的。但如果sessionState mode="SQLServer" ,在登录后,如果没有注销,以后是不会要求登录的
    但是阿祥认为只要将客户端的身份Cookie的过期时间设置的足够长,是永远不会要求重新登录的,请问谁对?谢谢!

     

     

    2011/7/2 17:19:19 cw
    登录状态能否保持两个星期以上?

    2011/7/2 17:22:49 阿祥
    现在是记住密码哦。只是没有说明保留多久。

    2011/7/2 17:23:17 cw
    此外,你们是否有服务器如SQL server 保存用户的状态?


    2011/7/2 17:23:47 阿祥
    session是吧。

    2011/7/2 17:24:53 cw
    没有专门的SQL server,Session肯定保存的时间不长


    2011/7/2 17:25:11 阿祥
    呵呵。那是的。

    2011/7/2 17:27:07 阿祥
    记住密码和保存session 是两个概念

    2011/7/2 17:27:16 阿祥
    记住密码是用cookie的。

    2011/7/2 17:27:29 阿祥
    保存session是在服务端。记住密码是在客户端。

    2011/7/2 17:27:36 阿祥
    两个不同的概念

    2011/7/2 17:28:06 阿祥
    cookie设置半个月过期,是保存在你本机的。

    2011/7/2 17:29:01 cw
    我错了吗 aspx 是使用session,不需要 cookie

    2011/7/2 17:43:23 cw
    ASP.NET会话状态模块在Web.config文件中<System.web>标记下的<Sessionstate>标记的mode属性来决定
     该属性的四种可能的值: Off、 Inproc StateServer 和SQLserver。

    2011/7/2 17:45:05 阿祥
    呵呵。想说明什么。

    2011/7/2 17:45:15 cw
    也就是说,即使客户端的Cookie完好,但服务器端丢失了Session,用户也不得不重新登录?

    2011/7/2 17:45:31 阿祥
    不会。

    2011/7/2 17:46:15 阿祥
    cookie保存了用户的用户名和是否记住密码。如果服务端没有登录。就会自动登录

    2011/7/2 17:46:34 阿祥
    这个过程是自动的。

    2011/7/2 17:46:38 阿祥
    用户感觉不到。

    2011/7/2 17:46:50 cw
    你错了吗?

    2011/7/2 17:47:45 阿祥
    记住密码是cookie做的。

    2011/7/2 17:48:30 cw
    如果服务端丢失了Session,客户端原来的Cookie的数据,服务器端就不会识别为原来的用户,就会要求重新登录

    2011/7/2 17:49:35 阿祥
    不会要求登录

    2011/7/2 17:49:40 cw
    <sessionState mode="InProc"  cookieless="false"  timeout="240"/> 这种情况下,在服务器进程重启后,就会要求用户重新登录
    在服务器进程没有重启时,你是可以自动化登录,但在共享主机情况下,InProc是经常会清空的,所以 "记帐网"隔几天要登录一次,但如果sessionState mode="SQLServer" ,在一次登录后,如果没有注销是不会要求登录的

    2011/7/2 17:54:07 阿祥
    我详细和你说一下吧。你也是第一个会员中做技术的。
    现在我就假设服务端每隔10分钟就重启一下进程
    但是对于网站来说,根本就没有影响。
    用户登录时。cookie会记住这个用户名是否登录。这个是系统自带的cookie,也就是session
    你要明白。session就是cookie
    只不过是自系统定义的cookie
    假设服务端重启进程了。那么本地的这个cookie就会过期
    这个时候。如果你登录时没有记住密码。系统就会需要你重新登录。
    如果你点了记住密码。就不需要。你完全感觉不到服务端已经重启了进程

    2011/7/2 17:57:15 阿祥
    这是怎么做到的呢。

    2011/7/2 17:57:21 阿祥
    原因如下你选中记住密码时,网站就在你本地建一个新的cookie保存了你的用户名
    当服务器重启进程时。你本地确实需要重新登录了。但是可以用编程的方式。让它自动登录
    不需要手工再输用户名和密码。

    2011/7/2 17:58:53 cw
    那你说为什么 "记帐网"隔几天要登录一次, 是你们设置了Cookie过期日期造成的吗

    2011/7/2 17:59:00 阿祥
    是的。设置了这个cookie半个月过期
    这个完全和服务端以何种方式保存cookie没有任何关系。
    如果你没有选记住密码。就和服务端有关系了。
    因为服务端一重启进程。客户端立即需要再登录

    2011/7/2 18:00:20 cw
    我可以负责的说,绝对没有到半个月,就要求输入用户我和密码
    本地cookie受制于很多方面的。这个只能是大概。没有绝对的。

    2011/7/2 18:01:03 cw
    我绝对没有清除过Cookie,我的硬盘也足够大
    我发了帖子讨论一下


    Online Calculator - Online platform to create program with C# 4.0 and share with other people
    2011年7月2日 11:36

答案

全部回复

  • 但是阿祥认为只要将客户端的身份Cookie的过期时间设置的足够长,是永远不会要求重新登录的,请问谁对?谢谢!


    Online Calculator - Online platform to create program with C# 4.0 and share with other people
    不一定对。即便Cookie时间足够长,但是我如果换了一台电脑,或者是同一台电脑启动了另外一个浏览器(不同的浏览器),或者开了一个小号等,依旧可能需要重新登录的。如果你想做一个永久的无需登陆的,还是保存在SQL SERVER为好

    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请讨论
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年7月3日 4:43
  • 下面是asp.net 的一个标准登录控件,使用Form验证。当我选择Remember me next time并登录成功后,在缺省情况下,过几天后,当我再次访问成员页面时,我将不得不重新登录?

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>

    <!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:Login ID="Login1" runat="server">
    </asp:Login>

    </div>
    </form>
    </body>
    </html>



    <membership>
    <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
    type="System.Web.Security.SqlMembershipProvider"
    connectionStringName="MyConnect"
    enablePasswordRetrieval="false"
    enablePasswordReset="true"
    requiresUniqueEmail="true"
    maxInvalidPasswordAttempts="10"
    minRequiredPasswordLength="1"
    minRequiredNonalphanumericCharacters="0"
    passwordAttemptWindow="10"
    applicationName="/"
    requiresQuestionAndAnswer="true"
    />
    </providers>
    </membership>

    Online Calculator - Online platform to create program with C# 4.0 and share with other people
    2011年7月3日 6:05
  • 此外


    请问你的判断是,阿祥使用的是用Cookie来保存用户身份,而不是asp.net缺省的身份验证机制 (<add name="AspNetSqlMembershipProvider" )

    在asp.net缺省的身份验证机制下,当使用InProc的模式时,即使用户在登录时选择了Remember me next time,但如果“务器检测到距离上次使用session的时间,已超过了设置的固定的过期时间”,在你下次访问成员网页时,仍然要求登录,对吗?

     


    Online Calculator - Online platform to create program with C# 4.0 and share with other people
    2011年7月3日 6:06