【问题标题】:How to keep a default page with Forms Authentication?如何使用表单身份验证保留默认页面?
【发布时间】:2011-08-21 07:22:12
【问题描述】:

我有一个使用表单身份验证的网站,我的困境是我需要用户在他们第一次使用“www.[site].com”导航到该网站时点击Default.aspx 页面。然后他们可以选择单击登录链接以重定向到登录页面并从那里登录到该站点。

现在,每当您请求该站点时,您总会得到登录页面。我不确定我使用的是正确的方法吗?

有什么想法吗?

更新:像这样的流程:

  1. 导航到 www.[site].com
  2. 获取Default.aspx
  3. 点击LoginStatus控件配置图片
  4. 重定向到Login.aspx

考虑到 web.config 看起来像:

<authentication mode="Forms">
  <forms loginUrl="Default.aspx" timeout="20" protection="None" cookieless="UseCookies"/>
</authentication>

LoginStatus 控件是这样的:

 <div class="loginStat">
            <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LoginImageUrl="~/images/Key-icon.png"
                LogoutImageUrl="~/images/LogOut32.png" LogoutPageUrl="~/" ToolTip="Log in/out" />
        </div>

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    如何将DefaultUrl 属性设置为“default.aspx”并从表单身份验证标记中排除 login.aspx?

    根据您的评论进行修改
    显然你没有排除 login.aspx。将此添加到您的根目录的 web.config 中的适当位置(如果 login.aspx 和 default.aspx 放在根目录中)

    <location path="login.aspx"> 
     <system.web>
      <authorization> 
        <allow users="*" />
      </authorization>
      </system.web>
    </location>
    

    【讨论】:

    • 我已经这样做了,我觉得这不是直截了当的方法的原因是 具有登录图像的控件总是将您重定向到默认页面,在这种情况下我必须使用链接图像或其他东西来重定向到登录页面而忘记表单身份验证的内置代码?
    • 你没有按照我说的去做,否则在打开login.aspx的时候不会重定向到default.aspx。我已经编辑了我的帖子。
    • 谢谢 citronas,感谢您的回答,我的 web.config 中已经有了,问题是 LoginStatus 重定向到默认页面,即“default.aspx”而不是“login.aspx” .从我所见,我认为我应该使用链接图像或带有我自己代码的 href 图像来进行正确的身份验证。
    • 如果 LoginStatus 导致重定向,如何重建您自己的 LoginStatus?获取登录用户的名字很容易,注销链接是3行代码
    • 抱歉回复晚了,没有邮件通​​知很容易忘记!!是的,我最终这样做了。非常感谢!
    【解决方案2】:

    您的问题是您在“表单”身份验证标记中将Default.aspx指定为“loginUrl”属性。您的第二个问题可能是您不允许匿名用户访问Default.aspx

    将您的 web.config 修改为如下所示:

    <authentication mode="Forms">
        <forms defaultUrl="Default.aspx" loginUrl="Login.aspx" timeout="20" protection="None" cookieless="UseCookies"/>
    </authentication>
    

    允许匿名用户查看 Default.aspx 而无需表单身份验证自动将他们重定向到 Login.aspx 的关键是将其包含在您的 web.config 中:

    <location path="Default.aspx"> 
        <system.web>
            <authorization> 
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
    

    这将允许用户在不登录的情况下看到Default.aspx。如果用户是匿名的,LoginStatus 控件将使用“forms”标签的“loginUrl”属性作为链接到的位置,这与我的配置将是Login.aspx,如您所愿。

    【讨论】:

    • 感谢您的回复,您是在建议我不要为 loginUrl 分配任何内容吗?实际上,我最终编写了自己的 LoginStatus 并向其中添加了更多 jQuery 内容。
    • "loginURL" 应该是用户用来登录的 URL。正如它在锡上所说的那样 :) 当您请求该站点时总是得到登录页面的原因是您没有允许未经身份验证的(又名“匿名”)用户访问“Default.aspx”。这是我回复的第二部分。
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多