0

尝试使用表单身份验证仅在他们通过登录页面登录后才允许访问页面。当我登录并尝试重定向时,它只会将我重定向回登录页面。

网页登录控制

protected void WebGenLogin_Authenticate(object sender, AuthenticateEventArgs e)
    {
        //Verify user against active directory
        if (new AD().validate(WebGenLogin.UserName, WebGenLogin.Password))
        {
            Session["UserAuthentication"] = WebGenLogin.UserName;
            Session.Timeout = 30;
            FormsAuthentication.RedirectFromLoginPage(WebGenLogin.UserName, WebGenLogin.RememberMeSet);
            Response.Redirect("~/WebGen/Gen/Create.aspx");
        }
        else
        {
            Session["UserAuthentication"] = "";
            Response.Redirect("http://thekickback.com/rickroll/rickroll.php");
        }
    }

创建.aspx Web.config

<authentication mode="Forms">
    <forms defaultUrl="~/WebGen/Gen/Create.aspx" loginUrl="../Login.aspx" slidingExpiration="true" timeout="30" />
  </authentication>
4

4 回答 4

0

你可以试试这个:

if (new AD().validate(WebGenLogin.UserName, WebGenLogin.Password))
{
        Session["UserAuthentication"] = WebGenLogin.UserName;
        Session.Timeout = 30;
        FormsAuthentication.SetAuthCookie(WebGenLogin.UserName, false);
        FormsAuthentication.RedirectFromLoginPage(WebGenLogin.UserName, WebGenLogin.RememberMeSet);

        ***SNIP***
于 2013-10-10T17:30:26.110 回答
0

我不知道 AD() 调用的对象类型,但您可能没有使用默认的 ASP.NET 成员资格功能。我记得,成员资格类上的 ValidateUser 方法如果返回 true,则具有实际登录用户的副作用。

对用户进行身份验证后,您可能需要将 HttpContext.User 设置为代表用户的新 IPrincipal,然后在重定向之前调用 FormsAuthentication.SetAuthCookie()。

于 2013-10-10T17:32:46.747 回答
0

好的,我想通了。它与我的代码无关。但是,我确实删除了在会话中存储用户名。

我要做的就是将 IIS 上的根站点更改为应用程序。身份验证模式行与 Login.aspx 一起放在根目录下 Create.aspx 在另一个文件夹中。我从它的 Web.config 中删除了身份验证模式,然后将其放入拒绝部分,一切正常。

于 2013-10-10T18:23:19.887 回答
0

代码确实有效。发现这是IIS的问题。需要将整个文件夹结构变成一个应用程序,而不是它的其他部分。

于 2013-10-17T08:08:22.713 回答