2012-06-12 107 views
1

Problem using Login Controller登录查看出现的记录,但我没有登录

我有一个问题,登录观母版页。

当我登录时,一切正常,但如果关闭标签一段时间或重建应用程序,我的会话已关闭,但登录视图仍显示Session:/。

我有这样的代码中的Site.Master

<div class="loginDisplay"> 
      <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false"> 
       <AnonymousTemplate> 
        [ <a href="~/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> 
        ] 
       </AnonymousTemplate> 
       <LoggedInTemplate> 
        Bienvenido <span class="bold"> 
        <%-- HeadLoginName--%> 
         <asp:LoginName ID="MemberName" runat="server" /> 
        </span>! [ 
        <asp:LoginStatus ID="MemberLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" 
         LogoutPageUrl="~/Login.aspx" onloggingout="HeadLoginStatus_LoggingOut" /> 
        ] 
       </LoggedInTemplate> 
      </asp:LoginView> 
     </div> 

我做错了什么?

+0

什么是在你的Login.aspx.cs文件中,可能有设置Authentication Cookies – Damith

回答

1

恐怕你不进行以下两个概念之间的区别:

让我们我试试阐述:ASP.NET会话是什么它允许解决HTTP协议的无状态性质。服务器向客户端发送一个cookie,然后这个cookie随后由客户端在每个后续请求中发送。然后服务器将内存中的一些信息与这个cookie相关联。您可以使用Session["someKey"]对象访问此信息。默认情况下,该信息存储在内存中,尽管您可以将其配置为处理过程中。因此,当您重建应用程序或达到超时时间时,服务器上的内存将被释放,并且您存储的所有对象都将消失。要配置ASP.NET会话的超时时间,您可以使用以下内容:

<system.web> 
    <sessionState timeout="30" /> 
</system.web> 

另一方面,表单认证是完全不同的。它使用cookie来跟踪经过身份验证的用户。此Cookie与ASP.NET会话Cookie不同。它具有不同的超时值并单独配置:

<authentication mode="Forms"> 
    <forms 
    loginUrl="/login" 
    timeout="30" /> 
</authentication> 

Forms Authentication机制不会在服务器的内存中存储任何内容。它跟踪存储在cookie内的经过身份验证的用户。所以,即使你重新编译你的应用程序,用户仍然可以在web.config中定义的给定的超时时间内进行身份验证。请注意,slidingExpiration属性会更新每个请求的超时时间。