与标题状态一样 - 我有一个看起来像
的web.config文件<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms name="login" protection="All" timeout="30" loginUrl="login" defaultUrl="~/">
<credentials passwordFormat="Clear">
<user name="admin" password="password" />
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
我想做它应该做的事情......我想拒绝所有试图进入该网站的用户。
然而,它有效,它重定向到“帐户/登录?ReturnUrl =%2flogin”我从未听说过的网址...
我可以改变这个地方吗?
答案 0 :(得分:2)
我以前见过这个问题。毫无疑问,你也会收到这个错误:
错误消息401.2。:未经授权:由于服务器配置,登录失败。验证您是否有权根据您提供的凭据和Web服务器上启用的身份验证方法查看此目录或页面。请与Web服务器的管理员联系以获取其他帮助。
您被重定向到“/ Account / Login”,甚至不存在。我相信,由于使用MVC组件,即使您使用的是ASP.NET Forms网站,也会出现某种默认情况。也许您有一些Razor页面,并且以下内容已添加到您的web.config中:
<appSettings>
<add key="webpages:Enabled" value="true" />
</appSettings>
在这里有这样的东西似乎足以弄乱你正常定义的登录页面:
<authentication mode="Forms">
<forms loginUrl="login" timeout="43200"/>
</authentication>
我通过向appSettings添加额外的“loginUrl”键来解决这个问题:
<appSettings>
<add key="webpages:Enabled" value="true" />
<add key="loginUrl" value="~/Login.aspx" /><!-- Override default -->
</appSettings>
答案 1 :(得分:1)
loginUrl
param没有绝对路径,因此路径与网站的相关文件夹混合在一起。
解决方案:
loginUrl="~/login"
或
loginUrl="/login"
答案 2 :(得分:0)
问题是
loginUrl="login"
这是发送未经身份验证的用户的URL。如果登录页面的URL是“Login.aspx”,那么你也应该设置它。
loginUrl="login.aspx"
最后一块,ReturnURL,是用户成功登录时重定向的地址。
答案 3 :(得分:0)
使用代码UrlPath.Combine(HttpRuntime.AppDomainAppVirtualPathString, loginUrl);
创建LoginUrl,因此我猜测您的网站根目录设置为“应用程序”。