2010-09-09 71 views
2

请告诉我如何构建Windows窗体登录(不是ASP.net) 。此登录不仅应使用Windows身份验证方法进行验证,还应使用数据库用户。如何开发登录表单C#.net

验证用户名和密码的方式。 我用这个类型的查询它

SELECT COUNT(*) FROM [Table Name] WHERE UserName = @username AND Password = @password; 

如果用户可用的计数> 0 上面部分手柄代码侧。

using int x = Int32.Parse(commandObject.ExecuteScalar().ToString()); 
if(x > 0} 
    **log** 
else 
    **fail** 

我该如何做到专业和正确的方式?

回答

2

由于您已经拥有SQL,所有您需要的只是一个基本表单,除了隐藏密码之外,登录表单没有什么特别之处,您可以使用TextBox.PasswordChar属性来完成此操作。

+0

其实,有些人觉得躲在密码是不是一件好事,虽然这对一个网站比在桌面应用程序中更大的imapct。 http://www.useit.com/alertbox/passwords.html – mickeyf 2010-09-09 13:53:33

+0

@mickeyf:我认为这主要是在设置/更改密码时,而不是在您刚刚登录时。 – 2010-09-09 13:59:15

+0

无论在哪种情况下,权衡是“我是否更担心谁在看我的肩膀,或者'我不明白我是否发指或不'。”请注意,我并不偏袒,只是指出了争议。 – mickeyf 2010-09-10 04:48:29

0

“Windows身份验证”是什么意思?您可以从环境中读取登录的用户并使用此值预填充用户文本字段。

tbUserName = Environment.UserName; 

在用户输入密码后,您的设置会指示要执行的操作。密码数据库散列(MD5,SHA1)还是逐字?如果是,请对输入的密码进行散列处理 - 否则不要。

您可以使用这两个字符串使用您的偏好技术(例如ADO.Net)从您的DataSource中选择实体。如果没有结果返回,登录失败。记住:这样你就无法分辨只有密码或用户或两者都是错误的。

0

“专业和正确的方式”

这取决于你应用程序,你让任何还挺内容可以看出还是先认为应该登录?

如果是:

  • 与您的登录屏幕
  • 在“登录”创建一个窗口表单按钮被点击,检查SQL你想要的方式
  • 如果OK,关闭该窗口,并做一个form.Show()您的应用程序
  • 其他的主窗口,只给一个很好的理由,你不允许用户继续

如果Windows身份验证,您需要检查该Windows用户是否可以访问它,执行相同的过程,但您的行为例如是formLogin.Active,并要求提供凭据,如果该Windows用户不是有效的用户并再次执行上述过程。

举个例子,SuperOffice CRM 6 for Windows应用程序,有这样的登录表单:

alt text http://www.balexandre.com/temp/2010-09-09_1557.png

我希望这有助于获得一个想法。

如果您询问代码只有,那么你已经有了很好的答案。

0

只是一个想法... 让您登录的第一个屏幕的用户访问。 如果他们通过,然后显示主应用程序窗体并隐藏登录。 如果他们失败,只需显示一条消息说明。 这不像web应用程序,用户可以在其中键入url并尝试访问他们想要的任何页面。 你有完全控制:)