ASP.NET 登录控件(Login control)相关问题

来源:互联网 发布:大数据对餐饮业有什么 编辑:程序博客网 时间:2024/06/10 09:11

ASP.NET 登录控件(Login control)相关问题

                 

文章转载于:破小三的雅阁

            http://www.seamana.cn/index.php/archives/459.html  

1 -如何根据他们的用户组重定向用户到不同的网页。

       这可以通过处理登录控件的LoggedIn事件来实现。20090526_1

 

 

protected void Login1_LoggedIn(object sender, EventArgs e)    {        // 如果在查询字符串中没有 returnUrl  , 我们根据用户的角色来重定向        if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))        {                  if (Roles.IsUserInRole(Login1.UserName, "Admins"))                Response.Redirect("~/Admins/Default.aspx");            else if (Roles.IsUserInRole(Login1.UserName, "Editors"))                Response.Redirect("~/Editors/Default.aspx");        }    }

 

2 -当登录成功后,如何隐藏登录控件

      要对登录用户隐藏登录控件,只需将VisibleWhenLoggedIn属性设为false.

<asp:Login ID="Login1" runat="server" VisibleWhenLoggedIn="False" ...

你也可以用LoginView 控件去实现它:

<asp:LoginView ID="LoginView1" runat="server">        <AnonymousTemplate>                             <asp:Login ID="Login1" runat="server">            </asp:Login>        </AnonymousTemplate>    </asp:LoginView>

 

3 ,如何隐藏下次记住我复选框?

      您可能需要防止用户选中”记住我的下一次”复选框,以防止持续的验证Cookie。

       

      为了做到这一点,你只需要设置它的DisplayRememberMe属性为”FALSE” ,然后你需要设置它的RememberMeSet属性。

      如果你一定要网站记住用户,您可以将RememberMeSet属性设置为True ,否则你将其设置为false 。

     <asp:Login ID="Login1" runat="server" DisplayRememberMe="false" RememberMeSet="false" ...

 

4 ,如何使用带有现有用户表登录控件?

     默认情况下,登录控制将利用提供的成员关系以验证用户的身份,但如果您已经有您的自定义用户表,您可以使用登录控制这样的:

 

 

protected void  Login1_Authenticate(object sender, System.Web.UI.WebControls.AuthenticateEventArgs e)    {        string userName = Login1.UserName;        string password = Login1.Password;         bool result = UserLogin(userName, password);        if ((result))        {            e.Authenticated = true;        }        else        {            e.Authenticated = false;        }    }     private bool UserLogin(string userName, string password)    {         // 从web.config 读取连接字符串        string conString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;         using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString))        {            //'声明命令,该命令将被用来执行SELECT语句            SqlCommand com = new SqlCommand("SELECT UserName FROM Users WHERE UserName = @UserName AND Password = @Password", con);             // 设置 username and password 参数            com.Parameters.Add("@UserName",  SqlDbType.NVarChar).Value = userName;            com.Parameters.Add("@Password",  SqlDbType.NVarChar).Value = password;             //执行 select命令            try            {                con.Open();                              string result =Convert.ToString( com.ExecuteScalar());                //检测结果                if (string.IsNullOrEmpty(result))                {                    //i无效的user/password , 返回false                    return false;                }                else                {                    // 返回true,有效登录                    return true;                }            }            catch (Exception ex)            {                throw;            }        }    }

  

 

5 ,我不想将登录控件作为HTML表,而想作为一个当Div,该怎么做?

您可以使用的CSS友好控制适配器去解决这个问题。

 

6之在我发布我的网站后,我收到System.Web.Security.SqlMembershipProvider’ requires a database schema compatible with schema version ‘1′  . ..的错误,该怎么办?

    一个可能的原因是, ” aspnet_SchemaVersions “表的版本不具有正确值,请确保它有如下的值:

          

Feature

CompatibleSchemaVersion 

IsCurrentVersion

common

1

TRUE

health monitoring

1

TRUE

membership

1

TRUE

personalization

1

TRUE

profile

1

TRUE

role manager

1

TRUE

8 ,如何以弹出显示登录菜单?

详见我的另一篇文章

 

 

9 -我该如何记录无效的登录尝试?

 

   protected void Login1_LoginError(object sender, EventArgs e)    {            string UserName = Login1.UserName;        string Password = Login1.Password;            }

 

 

10 ,我在web.config credential中指定我网站中的用户,我仍然可以使用登录控件登录吗?

是你可以,你只需要处理登录控件的authenticate验证事件。 假设你在Web.config中有Credential节点:

<authentication mode="Forms">    <forms>        <credentials passwordFormat="Clear">            <user name="User1" password="****" />            <user name="User2" password="****" />        </credentials>    </forms></authentication>

 

你可以让用户控件这样使用上述节点

 

   protected void Login1_Authenticate(object sender, System.Web.UI.WebControls.AuthenticateEventArgs e)    {        string UserName = Login1.UserName;        string Password = Login1.Password;         if (FormsAuthentication.Authenticate(UserName, Password))        {            e.Authenticated = true;        }        else        {            e.Authenticated = false;        }    } :  

FormsAuthentication.Authenticate方法将自动检查用户的credentials节点。

 

 

11 -我使用的不是FormsAuthenticaiton ,而是使用的Session对象确保我的网站安全性,我是否仍然可以使用登录控件?

     是的,你可以使用它,请阅读我关于这个问题的文章。。

原创粉丝点击