如何在ASP.NET中处理未经授权的站点导航?

如何在ASP.NET中处理未经授权的站点导航?,asp.net,authentication,Asp.net,Authentication,我想知道如何做以下 我有一个注册系统。当用户成功注册时,他是 然后为他的个人资料做了一系列的数据收集, 最后,在他的个人资料主页上结束,在那里他可以开始使用该网站 所有这些都是在从未登录系统的情况下发生的,因此,他未经身份验证 未经证实 我的问题是,这是怎么发生的?我如何允许我的用户未经验证和未确认,但我了解并使用网站的所有方面 按照我现在设置的方式,我的代码应该是这样做的: case CreateProfileStatus.Success: //FormsAuthentication.SetA

我想知道如何做以下

我有一个注册系统。当用户成功注册时,他是 然后为他的个人资料做了一系列的数据收集, 最后,在他的个人资料主页上结束,在那里他可以开始使用该网站

所有这些都是在从未登录系统的情况下发生的,因此,他未经身份验证 未经证实

我的问题是,这是怎么发生的?我如何允许我的用户未经验证和未确认,但我了解并使用网站的所有方面

按照我现在设置的方式,我的代码应该是这样做的:

case CreateProfileStatus.Success:
//FormsAuthentication.SetAuthCookie(userName, false);
Response.Redirect("NextPage.aspx", false);
break;
但是,我被重定向到登录页面注册后,这不是我想要的结果。这是my web.config中的相关节点的外观:

    <authentication mode="Forms">
      <forms name=".AuthCookie" loginUrl="default.aspx" protection="All"/>
    </authentication>
    <authorization>
      <deny users="?"/>
      <allow roles="Administrators" />
    </authorization>
    <anonymousIdentification enabled="true" 
                             cookieName=".ASPXANONYMOUS"
                             cookieTimeout="100000" cookiePath="/" 
                             cookieRequireSSL="false"
                             cookieSlidingExpiration="true" 
                             cookieProtection="Encryption"
                             cookieless="UseCookies" 
                             domain="" />
当用户在注册并与站点进行初始交互后注销时,他将被要求在返回后登录。此时,必须对其进行认证,但在一段时间内无需确认。最终,他会被提醒


那么,这是如何做到的?提前感谢。

现在,拒绝用户=?拒绝匿名用户访问网站的所有部分。表单身份验证不是全部或全部。您可以将其设置为仅应用于站点的一部分。由于您已将其应用于everywhere,因此每当您有一个匿名用户未获得身份验证cookie时,他们将被重定向到default.aspx,这是他们需要登录的地方


如果我理解正确,您需要执行以下操作…将网站的注册部分设置为对匿名用户开放,然后在web.config的授权部分执行此操作。这将防止在注册过程中重定向到default.aspx。一旦他们完成注册,您可以将他们发送到default.aspx进行登录,或者识别他们现在已注册,并使用FormsAuthentication.SetAuthCookie方法为他们登录。

谢谢BPotocki,我将此标记为答案,因为我遵循了您的建议,并且成功了。非常感谢。不过,如果你不介意的话,我只有一个后续问题。对于SetAuthCookiecookie,false,我是否应该从aspnet\u数据库设置与aspnet\u用户中的UserId列对应的Guid值?如果不是,我应该使用什么?这与会话id相同吗?再次感谢。SetAuthCookie的第一个参数是userID,它可以是任何您想要的。使用系统中标识用户的任何内容。它与会话id不同。一个用户可以在不同的计算机上打开两个会话,因此用户id将保持不变,因为用户代码Sherpa将始终是您的id。