2009-12-09 69 views
1

我想,当我输入http://localhost/Admin,带我到页面http://localhost/Something/Login.aspx。我怎样才能做到这一点?ASP.NET URL重定向

+0

你想让这个人登录到你的网站上的保护区,或者你只想要重定向吗?请澄清。 – RuudKok 2009-12-09 11:39:41

+2

你能详细说明一下吗?您是否希望用户登录以访问某些页面?或者你只是想执行重定向? WebForms或MVC? – 2009-12-09 11:40:31

+0

我只想重定向到一个特定的URL。 – Emanuel 2009-12-09 11:43:54

回答

5

你在找什么叫做Forms Authentication。以下是一个非常简短的介绍

你需要创建一个登录页面,使得这样的电话,验证用户的身份后:

FormsAuthentication.RedirectFromLoginPage(userName); 

然后,你需要在web.config文件要连接登录页面:

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Something/Login.aspx" /> 
    </authentication> 
</system.web> 

此外,您需要告诉框架,所有低于~/Admin/的URL都需要用户进行身份验证。这可以通过该文件夹中添加另一个web.config文件来完成:

<system.web> 
    <authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
    </authorization> 
</system.web> 

阅读上面链接的文章,或搜索“ASP.NET窗体身份验证”的网站,你很快就会在正确的轨道上。


编辑1 - 如果你想要做的是真的“做一个重定向到一个特定的URL”,那么这是足够了:

Response.Redirect("~/Something/Login.aspx") 

从你在提到的URL你的问题,似乎你正试图执行某种认证/授权计划。如果这是真的,表单身份验证是一个更好的答案。


EDIT 2 - 如果你想改写,不定向,从~/Admin~/Something/Login.aspx请求您可以通过在你的根映射URL映射web.config文件

<system.web> 
    <urlMappings> 
     <add url="~/Admin/Default.aspx" mappedUrl="~/Something/Login.aspx"/> 
    </urlMappings> 
</system.web> 

在这样做大多数设置中,如果请求的URL以已知后缀结尾,则Web服务器将仅将请求传递给ASP.NET,如.aspx。通过欺骗Web服务器将~/Admin的请求传递给ASP.NET的方法是使用Web服务器中的“默认文档”功能。为此,您必须在~/Admin文件夹中添加一个名为Default.aspx的空文件。