2014-01-22 169 views
0

我目前正在创建一个Web应用程序,出于安全原因,我必须将匿名用户重定向到登录页面。做一些研究之前,这里是我有我的Site.Master页:登录注销混淆(重定向到登录页面,如果未登录)

[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> ] 

,你可以看到,我已经创建了包含注销代码,FormsAuthentication.Signout和这样的我自己的注销页面。在这个调用这个页面的siteMap中还有一个Logout链接。

今天早上一切都很好。当我点击LoginStatus中的注销链接时,注销工作正常。我点击我的网站地图中的注销链接,注销工作正常。我试着立即再次登录,应用程序将我重定向到默认页面。但是,当我在这里Web.config添加这段代码:

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

奇怪的事情发生了。我点击LoginStatus中的注销链接,该应用将我重定向到登录页面,而不是注销页面。更重要的是,当我尝试再次登录时,该应用程序会将我重定向到注销页面。这使我必须登录TWICE只是为了能够再次回到应用程序。

为什么/这是怎么发生的?任何见解将不胜感激。

回答

0

这是因为您拒绝访问未经过身份验证的用户访问您网站中的所有页面。您需要为可以未经身份验证的页面添加排除项。

例如 - 授予访问主页的任何用户: -

<location path="home.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 

一些导游在这里: -

http://www.codeproject.com/Articles/667473/ASP-NET-WebConfig-Location-and-Authroization-Tags

http://www.c-sharpcorner.com/UploadFile/prg.apv/usage-of-location-tag-in-Asp-Net-application/

+0

怎么做呢?如果你可以建议一种方法或什么的,它将不胜感激。 – JamesP

+0

查看我编辑的回复James – sh1rts

相关问题