我目前正在创建一个Web应用程序,出于明显的安全原因,我必须将匿名用户重定向到登录页面。在做一些研究之前,这里是我的Site.Master页面:
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> ]
如您所见,我创建了自己的Logout页面,其中包含注销代码FormsAuthentication.Signout
等。此站点地图中还有一个Logout链接,用于调用此页面。
今天早上一切正常。当我单击LoginStatus
中的“注销”链接时,注销工作正常。我单击siteMap中的Logout链接,注销工作正常。我尝试立即再次登录,应用程序将我重定向到我的默认页面。但是当我在Web.config
:
<authorization>
<deny users="?"/>
</authorization>
发生了一些奇怪的事情。我单击LoginStatus
中的Logout链接,然后应用程序将我重定向到Login页面而不是Logout页面。更重要的是,当我再次尝试登录时,该应用程序会将我重定向到“注销”页面。这使得我必须登录 TWICE 才能再次回到应用中。
为什么/这是怎么回事?我们将不胜感激。
答案 0 :(得分: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/