日期:2014-05-18  浏览次数:20453 次

用NET自带的FORMS验证,在我成功了之后,Identity.Name 显示的是我的机器名,不是登陆用户名,这是怎么了?
C# code
        <!--
    “protection”的值:
        All:指定应用程序同时使用数据验证和加密来保护 Cookie。
        None:对Cookie禁用加密和验证。
        Encryption:对Cookie进行加密,但不对该 Cookie 执行数据验证。以此方式使用的 Cookie 可能会受到精选的纯文本的攻击。
        Validation:指定验证方案验证已加密的 Cookie 的内容在转换中是否未被改变。
    -->
        <authentication mode="None">
            <forms name=".pacific" protection="Encryption" path="/" timeout="30" loginUrl="Admins/login.aspx"/>
        </authentication>
        <!--  会话状态设置
          默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
          如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
         若要禁用 Cookie,请设置 sessionState cookieless="true"。
    -->
    <sessionState 
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false" 
            timeout="20" 
    />

::::
::::
::::
我在显示<%= Page.User.Identity.Name %>的时候,出现的是我的机器名,而不是登陆名,这是那里错误了?

------解决方案--------------------
User.Identity.Name将得到,验证通过(RedirectFromLoginPage 或SetAuthCookie)时输入的参数值,要看你登陆的时候传入的是什么.
------解决方案--------------------
<authentication mode="Forms">
<!--<forms name="es" path="/" loginUrl="login.aspx" protection="All" timeout="180" />-->
</authentication>
------解决方案--------------------
你登陆的时候登陆名传进去了吗?
FormsAuthentication.SetAuthCookie(登陆名, false);
------解决方案--------------------
C# code
<authentication mode="forms"/>