授权标记使页面显示为纯文本

时间:2011-03-19 09:08:43

标签: asp.net authorization

我是网络技术的新手,我的经验纯粹是C#。 我从网页设计师那里得到了一个HTML设计,我正在构建它并随时学习。

我有一些网页用于授权访问,其他网页用于匿名用户

另外,我了解到拒绝匿名用户访问是通过使用webconfig中的以下更改添加授权标记来完成的

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH">
    </forms>
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

然而,除登录页面之外还有其他页面需要允许所有用户访问,例如注册页面

所以我从msdn那里了解到我需要添加一个位置标记来指示这些页面的文件夹 我创建了一个名为“Auth”的文件夹并添加了这些页面 所以我的web.confile看起来像

<location path="Auth">
        <system.web>
            <authorization>
                <deny users="?" />
            </authorization>
        </system.web>
    </location>

    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH">
            </forms>
        </authentication>
    </system.web>

最后,问题是登录后和调试期间,授权访问页面只显示为纯文本而没有任何格式化!谁能说出为什么会这样?

1 个答案:

答案 0 :(得分:1)

我用“纯文本”假设你的意思是你可以查看HTML确定,但它没有根据设计师(或你的)CSS文件设置样式。

如果您必须将页面移动到Auth文件夹中,这可能会破坏该页面引用的CSS文件的链接。

使用以下示例结构

\ - 应用的根源 \ Auth - 包含无法访问的页面
\样式 - 包含你的css文件(和图像?)
\ Styles \ FileName.css - 你所有漂亮魔法的css文件 \ Logon.aspx - 包含您的登录表单
\ Default.aspx - 包含每个人都可以访问的默认页面

如果不在Auth文件夹中的页面显示正常,我的猜测是你的css文件会像这样链接:

<link rel="Stylesheet" type="text/css" href="Styles/FileName.css">

但是现在您已经移动了页面,该引用不会指向同一个文件。将其更改为绝对路径,或者在您的情况下,您可以使用asp.net应用程序根路径....所以这(对于所有页面):

<link rel="Stylesheet" type="text/css" href="~/Styles/FileName.css">

或者

<link rel="Stylesheet" type="text/css" href="/Styles/FileName.css">

或者,如果这些都不起作用,对于您的auth文件夹里面页面,只需使用向上一级语法

<link rel="Stylesheet" type="text/css" href="../Styles/FileName.css">