2012-02-20 57 views
40

如何指定web.config中的根位置以允许未经身份验证的用户访问它?如何指定web.config中的根(/)位置?

根位置由default.aspx提供,但用户通常看不到default.aspx,他们只看到http://mysite.com/

所以我添加

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

如果用户点击mysite.com/default.aspx,但如果用户点击mysite.com/其中一期工程 - 他仍然重定向到登录页面。

我试过<location path="~">(没有帮助),也<location path="~/">,<location path="">(网站完全失败),并不能使其工作。

任何想法?

+0

他们可以访问至少访问的网址:'http:// mysite.com/default.aspx'? – balexandre 2012-02-20 09:00:20

+0

为什么您不使用IIRF通过编写重写和重定向规则来重定向default.aspx中的用户? – CodeSpread 2012-11-29 18:14:08

+0

你可以发布所有认证相关的web.config代码吗?我假设有更多的地方拒绝用户,你在哪里定义登录的位置。我希望看到这一切,并按照您的web.config中指定的顺序 – 2012-12-03 17:30:25

回答

0

如果你只想让未授权的用户访问的Default.aspx可以使用

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

<system.web>之前,并设置页面的默认在您的Web服务器。
在Visual Studio中,您可以选择页面和“设置为起始页”。

如果您想要允许访问根目录中的所有文件,您必须创建文件夹,在其中放置需要经过身份验证的用户访问的页面。

您可以创建一个安全文件夹,你可以把你所有受保护的网页,并改变你的web.config是这样的:如果你想指定

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

去除

<authorization> 
     <deny users="?"/> 
    </authorization> 
+5

这正是我在问题中发布的配置,正如我指出的 - 它不工作。对根目录(mysite.com/)的请求被视为不同于对mysite.com/default.aspx的请求 - default.aspx的规则不适用 – Michael 2012-02-29 01:28:45

-4

目录的根目录,使用<location path="" >

2

你可以通过2种方法实现

方法1:

您可以设置重定向到IIS http://mysite.com/default.aspx路径,如果任何用户直接涉及到你的site.in IIS7你可以做,通过点击默认文档。在这里,我附加的图像,供您参考

IIS7 setting to add your default page redirection

方法2

你可以通过这个网址ASp.NET Membership设置你的网络配置设置。

让我知道你是否需要更多细节。

2

我们过去的做法是为所有需要登录的功能创建一个文件夹,并为该文件夹设置require auth。所有aspx都转到该文件夹​​。该网站的根目录保持打开状态。

+0

那么,我们的情况恰恰相反,我们只有少数几页不需要认证。现在使用你的方法并没有什么意义。 – Dyppl 2012-12-03 06:19:51

2

您可能使用表单验证否?

<authentication mode="Forms"> 
    <forms loginUrl="~/Default.aspx" /> 
</authentication> 

这将解决您的问题。另一种方法是:

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

授权不会发生在主页上,我有一个单独的用户登录表单,所以第一条建议对我来说不起作用。我有'location'指令,类似于你发布的内容,但它没有帮助。 http://example.com/MainPage.aspx只是http://example.com/不工作。 – Dyppl 2012-12-03 06:18:40

0

要指定根目录,必须将其设置在位置块之外。

<configuration> 
    <system.web> 
    <authorization> 
     <allow users=“*“/> 
    </authorization> 
    </system.web> 
</configuration> 

,然后利用定位块保护您的文件夹等

<location path=“AccessDenied.aspx“> 
    <system.web> 
     <authorization> 
      <deny users=“?“/> 
     </authorization> 
    </system.web> 
</location> 
25

试试这个:

<system.web> 
    <urlMappings enabled="true"> 
     <add url="~/" mappedUrl="~/default.aspx" /> 
    </urlMappings> 
    <authorization> 
     <allow roles="admin"/> 
     <deny users="*" /> 
    </authorization> 
</system.web> 
<location path="Default.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 
+0

这工作...! – Dani 2014-02-11 06:42:22

+0

真棒 - 谢谢! :-) – Filip 2015-10-16 14:40:32

+0

谢谢!真的帮助我。 – 2016-06-09 03:23:06

3

只使用

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

或不写路径,因为默认路径是根

+0

你不能只写点“。”,你会得到一个错误! :D – 2014-07-23 20:48:39

+0

你确定吗?这个MSDN资源说,默认路径是点! http://msdn.microsoft.com/en-us/library/vstudio/ms178692(v=vs.100)。aspx – 2014-07-26 05:02:41

+0

我可以确认* dot *(并且根本没有路径)对于指向根目录是有效的,但是如果你在该位置下的任何内容都是在Web配置中的其他位置(位置之外)指定的,则它将为重复配置部分。必须删除“全局”定义才能完成这项工作。 – Ishmaeel 2017-12-22 09:02:09

0

使用此(。):

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

这对我的作品。

0

Merk是对的!

我在Windows上的netserver(不要问)使用

<location path=""> 
      <system.webServer> 
       <httpRedirect enabled="true" destination="http://www.newpathdestination.com" exactDestination="true" httpResponseStatus="Permanent" /> 
      </system.webServer> 
     </location> 

,确保把没有在引号之间的位置路径。将旧主页的请求重定向到新主页。