表单身份验证强制注销

时间:2011-04-06 19:09:58

标签: asp.net

web.config代码中的

是          部分启用配置             如果/当发生未处理的错误时该怎么办             在执行请求期间。特别,             它使开发人员能够配置html错误页面             显示以代替错误堆栈跟踪。

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>                             
    -->

    <forms loginUrl="Login.aspx" cookieless="UseCookies">                 
    </forms>
  </authentication>

每当我关闭应用程序并注销用户时,请求我退出..我想确保无论何时应用程序启动它都不应该先前登录..

这是web.config代码..

  <authentication mode="Forms">
    <!--
        The <customErrors> section enables configuration 
        of what to do if/when an unhandled error occurs 
        during the execution of a request. Specifically, 
        it enables developers to configure html error pages 
        to be displayed in place of a error stack trace.

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>                             
    -->

    <forms loginUrl="Login.aspx" cookieless="UseCookies"> 

    </forms>
  </authentication>


  <authorization>
    <allow roles="Administrator,Attorney,Director of Operations,Office Manager,Paralegal,Partner,Processor,Salary Admin,Unit Manager"/>
    <deny users="?"/>
  </authorization>

  <pages>              
  </pages>
</system.web>

                   

                                   

                                   

                                             

登录按钮代码

 string [] arr = new string[10]; 
          bool bCheckUser;
            try
            {
                if ((txtUserName.Text == "") || (txtPassword.Text == ""))
                {
                    lblError.Visible = true;
                    lblError.ForeColor = System.Drawing.Color.Red;
                    lblError.Text = "Enter UserName and Password";
                }
                else
                {
                    bCheckUser = Membership.ValidateUser(txtUserName.Text, txtPassword.Text);

                    arr = Roles.GetRolesForUser(txtUserName.Text);


                    FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);
                    FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text);

                    if (bCheckUser == true)
                   {
                        lblError.Visible = false;
                        Response.Redirect("MainMenu.aspx");
                    }
                    else
                    {
                        lblError.Visible = true;
                        lblError.ForeColor = System.Drawing.Color.Red;
                        lblError.Text = "You Username or Password is Invalid. Please try Again";
                    }

                }
            }
            catch(Exception ex)
            {
                lblError.Text = ex.Message.ToString();
            }
        }

2 个答案:

答案 0 :(得分:1)

您正在将 true 传递给此方法以创建持久性Cookie:

FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);

传递 false ,并将其移到if块内,如果您不想进行硬重定向,请删除该重定向:

if (bCheckUser == true)
{
       lblError.Visible = false;
        // Response.Redirect("MainMenu.aspx");
       FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
}

或使用如下所示的SetAuthCookie方法:

if (bCheckUser == true)
{
       lblError.Visible = false;
       FormsAuthentication.SetAuthCookie(txtUserName.Text, false);
       Response.Redirect("MainMenu.aspx");
}

答案 1 :(得分:0)

修改 看起来您正在调用FormsAuthentication.RedirectFromLoginPage,无论Membership.ValidateUser是返回true还是false。这可能与它有关。此代码是否在登录页面的Page_Load中调用?

我有几个问题:

  • 您实际关闭了浏览器吗? 然后重新打开它,或者只是 之后返回您的网站 收到相同的错误 浏览器?
  • 您的登录页面是否有记住 我设定了吗?
  • 您是否限制访问您的 webconfig中的网页?

默认情况下,我认为webconfig会打开大多数页面。您需要一个授权部分来限制访问权限。

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

以下是一些要查看的链接: