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

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对象确保我的网站安全性,我是否仍然可以使用登录控件?

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值