积极答复者
WINFORM时怎么做登录认证呢?

问题
-
在ASP.NET web.config 时面进行相应配置,WEB FORM 打开时,判断如果没有登录,则会自动转到登录页,但是如果用 winform 做客户端应该怎么实现相应功能呢?
请知道的网友告诉一下,谢谢!
相信自己,坚持下去。
- 已编辑 ThankfulHeartModerator 2013年9月17日 5:29 标题更改:和ASP.NET无关
答案
-
Hi,
看你帖子中所述,你是想使用 Winform 连接服务端的 Web Api 对么? 如果是这样的话,可以参照以下思路:
1. 在客户端(winform),将 username 与 password 包装在一个 http 请求中发送至服务端。
2. 服务端使用 MemberShip 进行验证,通过后为该用户创建一条 UserToken 记录,该表维护一个 ExpireTime(过期时间)列,并将该 Token 回传给客户端。
3. 客户端再请求 服务端(Web Api) 其它 Action 时只需要传递 Token 即可,服务端会检查 ExpireTime,如果过期就不能进行访问。
另:Token 可以是一个在服务端随机生成的 Guid,服务端与客户端的数据交互可以使用 Json 格式。
Please mark this as answer if it helps with this issue!
- 已建议为答案 ThankfulHeartModerator 2013年9月22日 4:07
- 已标记为答案 Barry WangModerator 2013年10月7日 10:10
全部回复
-
-
您好,
winform一開始就先開啟登入的Form,驗証完成後,才會開啟功能呀!
可參考: How to create winform login dialog and keep looping
我明白是需要先login,再使用系统里面的功能。但是这个login form 应该怎么和服务端通信呢?我想应该不会把服务端写一个 login(string username, string password) 方法吧? 至少 asp.net 里就没有login() 方法相信自己,坚持下去。
-
我明白是需要先login,再使用系统里面的功能。但是这个login form 应该怎么和服务端通信呢?我想应该不会把服务端写一个 login(string username, string password) 方法吧? 至少 asp.net 里就没有login() 方法
如果这里你指代的“通信”是数据库的话,应该使用SqlCommand等数据库专用类进行通讯,使用动态的SQL语句根据文本框输入的用户名和密码判断是否存在该用户,然后接着完成你要的事情。
关于远程数据库连接字符串,您可以:
1)要不参考:http://www.connectionstrings.com/
2)要不尝试先使用Vs中(视图=》SQL SERVER服务器资源管理器)创建一个针对某个特定数据库的连接,拷贝属性窗口中的连接字符串到配置文件,或者直接作为SqlCommand的初始化函数的一部分参数中去。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report -
我明白是需要先login,再使用系统里面的功能。但是这个login form 应该怎么和服务端通信呢?我想应该不会把服务端写一个 login(string username, string password) 方法吧? 至少 asp.net 里就没有login() 方法
如果这里你指代的“通信”是数据库的话,应该使用SqlCommand等数据库专用类进行通讯,使用动态的SQL语句根据文本框输入的用户名和密码判断是否存在该用户,然后接着完成你要的事情。
关于远程数据库连接字符串,您可以:
1)要不参考:http://www.connectionstrings.com/
2)要不尝试先使用Vs中(视图=》SQL SERVER服务器资源管理器)创建一个针对某个特定数据库的连接,拷贝属性窗口中的连接字符串到配置文件,或者直接作为SqlCommand的初始化函数的一部分参数中去。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report首先谢谢你的回复,但是你可能误会我的意思了。
我是说,我的服务端想用 ASP.NET WEB API, 客户端有多种类型: WINFORM,WEBFORM, IOS,WP 等,我需要一种认证方式,来通用这几种客户端。
相信自己,坚持下去。
-
你可以弄一个WebService发布到IIS上,然后不同客户端引用这个WebService判断。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report -
你可以弄一个WebService发布到IIS上,然后不同客户端引用这个WebService判断。
我觉得这样不太合理,WEB 本来就有他的自身验证方式,只是我想知道怎么移到WINFORM 上来而已。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report相信自己,坚持下去。
-
WinForm和Web验证是完全不同的,因为两者之间框架结构和理念也不同。所以不可同日而语。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report -
WinForm和Web验证是完全不同的,因为两者之间框架结构和理念也不同。所以不可同日而语。
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report
这是之前的观念,现在移动互联网时代,国内很多家都做到了。比如说QQ和金山快盘, 他有WEB 版本、客户端版本、IOS版本、WP版 等,另外还有 API 开放,他们的认证机制应该是一致的相信自己,坚持下去。
-
我觉得可以在服务端部署一个专门用于登陆验证的web服务,专门处理登陆验证的请求。现在很多公司的系统也都是这么做的。也有很多是直接验证Active Directory账户的。
客户端有这么多种平台,能够符合这种要求的我觉得还是web服务比较好,利于各种平台的数据通信。
WCF对你来说应该是一个不错的选择,请参考:
http://msdn.microsoft.com/zh-cn/library/aa354513.aspx
Caillen
<THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
Thanks
MSDN Community Support
Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later. -
Hi,
看你帖子中所述,你是想使用 Winform 连接服务端的 Web Api 对么? 如果是这样的话,可以参照以下思路:
1. 在客户端(winform),将 username 与 password 包装在一个 http 请求中发送至服务端。
2. 服务端使用 MemberShip 进行验证,通过后为该用户创建一条 UserToken 记录,该表维护一个 ExpireTime(过期时间)列,并将该 Token 回传给客户端。
3. 客户端再请求 服务端(Web Api) 其它 Action 时只需要传递 Token 即可,服务端会检查 ExpireTime,如果过期就不能进行访问。
另:Token 可以是一个在服务端随机生成的 Guid,服务端与客户端的数据交互可以使用 Json 格式。
Please mark this as answer if it helps with this issue!
- 已建议为答案 ThankfulHeartModerator 2013年9月22日 4:07
- 已标记为答案 Barry WangModerator 2013年10月7日 10:10
-
另:服务端验证 Token 方法应包括以下内容:
1. 将整个 Token Validation 包裹在 Try... Catch... 中。
2. 自定义 Token Exception(其中应包含有 Exception Code 字段用于客户端判断服务端对于该 Token 验证结果),在发生异常时将 Exception Code 包装在 Json 中返回给客户端(如:201表示 Token过期,202表示不存在此 Token 等)。
3. 客户端根据 服务端返回的 Code 进行判断下一步该如何处理(如果没有异常 Code 则正常显示接收到的数据,若 Token 不存在或是过期则弹出 “用户登录” 对话框)。
Please mark this as answer if it helps with this issue!
-
另:服务端验证 Token 方法应包括以下内容:
1. 将整个 Token Validation 包裹在 Try... Catch... 中。
2. 自定义 Token Exception(其中应包含有 Exception Code 字段用于客户端判断服务端对于该 Token 验证结果),在发生异常时将 Exception Code 包装在 Json 中返回给客户端(如:201表示 Token过期,202表示不存在此 Token 等)。
3. 客户端根据 服务端返回的 Code 进行判断下一步该如何处理(如果没有异常 Code 则正常显示接收到的数据,若 Token 不存在或是过期则弹出 “用户登录” 对话框)。
Please mark this as answer if it helps with this issue!
相信自己,坚持下去。
-
我觉得可以在服务端部署一个专门用于登陆验证的web服务,专门处理登陆验证的请求。现在很多公司的系统也都是这么做的。也有很多是直接验证Active Directory账户的。
客户端有这么多种平台,能够符合这种要求的我觉得还是web服务比较好,利于各种平台的数据通信。
WCF对你来说应该是一个不错的选择,请参考:
http://msdn.microsoft.com/zh-cn/library/aa354513.aspx
Caillen
<THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
Thanks
MSDN Community Support
Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.相信自己,坚持下去。
-
Hi,
看你帖子中所述,你是想使用 Winform 连接服务端的 Web Api 对么? 如果是这样的话,可以参照以下思路:
1. 在客户端(winform),将 username 与 password 包装在一个 http 请求中发送至服务端。
2. 服务端使用 MemberShip 进行验证,通过后为该用户创建一条 UserToken 记录,该表维护一个 ExpireTime(过期时间)列,并将该 Token 回传给客户端。
3. 客户端再请求 服务端(Web Api) 其它 Action 时只需要传递 Token 即可,服务端会检查 ExpireTime,如果过期就不能进行访问。
另:Token 可以是一个在服务端随机生成的 Guid,服务端与客户端的数据交互可以使用 Json 格式。
Please mark this as answer if it helps with this issue!
相信自己,坚持下去。