【问题标题】:ASP.Net Authentication if ReturnURL null UserData comes empty如果 ReturnURL null UserData 为空,则进行 ASP.Net 身份验证
【发布时间】:2011-05-15 09:20:28
【问题描述】:

您好,我的登录页面有问题。
场景是,
例如,我去 www.mydomain.com/admin/ 它会将我重定向到带有 ReturnURL 参数的登录页面,如下所示。 www.mydomain.com/login.aspx?ReturnURL=%2fAdmin%2f.
我正在使用管理员帐户登录,一切正常。
但是如果我直接去 Login.aspx 这意味着没有 ReturnURL QueryString 字段。
我使用相同的管理员帐户登录,但是当我在登录后尝试访问 www.mydomain.com/admin/ 时,它会将我重定向回登录页面。

我正在做这样的导航。我错过了什么?

//The code block that is logging in admin.
//check if there is a ReturnURL
if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
{
    Session["UserType"] = UserTypes.UserType.Admin;
    Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
}
//ReturnURL doesn't exists.
else
{
    FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
    Response.Redirect("/Admin/Default.aspx");
}

【问题讨论】:

    标签: asp.net authentication asp.net-authentication returnurl


    【解决方案1】:

    现在试试这个。替换您的代码

    //check if there is a ReturnURL
    
        if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
        {
            Session["UserType"] = UserTypes.UserType.Admin;
            Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
        }
        //ReturnURL doesn't exists.
        else
        {
            FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
            Response.Redirect("/Admin/Default.aspx");
        }
    

    这个

    if("Check if User Is Authentic")
    {
    Session["UserType"] = UserTypes.UserType.Admin;
    FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, cbUserRememberMe.Checked);
    }
    

    这将适用于您的整个代码。将经过身份验证的用户重定向回最初请求的 URL 或默认 URL。
    检查Default页面Load事件Session["UserType"]如果用户是Admin然后将他重定向到管理页面

    【讨论】:

    • @Ümit Akkaya:欢迎您。
    【解决方案2】:

    这是一个示例 web.config

    <configuration>
       <system.web>
       <authentication mode="Forms">
          <forms 
          name="401kApp" 
          loginUrl="/login.aspx"
          cookieless="AutoDetect"
          defaultUrl="myCustomLogin.aspx">
          <credentials passwordFormat = "SHA1">   
             <user name="UserName" 
             password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
          </credentials>   
          </forms>
       </authentication>
       </system.web>
    </configuration><br/>
    

    web.config 中设置defaultUrl="yourdefaultpageURL"

    你可以使用FormsAuthentication.RedirectFromLoginPage Method (String, Boolean)

    【讨论】:

    • @Ümit Akkaya:因为你的代码说如果没有ReturnURL goto ~/ 那意味着Loginpage。
    • @Thomas 我尝试了很多组合,但这也没有用。
    • @Thomas
    • 当您直接访问 Login.aspx 并登录时,它会将您重定向到 Default.aspx 或者您仍留在 Login 页面上?
    • 它把我重定向到Default.aspx
    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    相关资源
    最近更新 更多