急求:Web Service相关

mecurial 2009-09-28 08:02:15
功能:
SQL每个存储过程执行时需要验证用户的用户名、密码
Web Service中使用SQL的存储过程,需给存储过程传参(用户名、密码)
客户端可以通过浏览器或者c#的WinForm窗体程序调用Web Service


问题:
怎样使客户端本次登录时,记录用户名和密码供WebService传递给存储过程,避免每调用一次Web方法(存储过程)就要从客户端传递一次用户名和密码;(若使用Cookie或Session等烦请详解,本人对这些不太熟悉)
怎样使用户退出客户端程序或者关闭浏览器时,清除登录时记录的用户名和密码;
怎样避免调用Web方法返回SQL数据时出现混乱,如A用户的调用信息被B用户得到,B用户数据的被C用户得到;

说明WebService和客户端程序都使用c#,数据库为SQL Server
...全文
230 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyumei 2010-01-13
  • 打赏
  • 举报
回复
关注
tsongjb 2010-01-13
  • 打赏
  • 举报
回复
这个我想不是很复杂,我没理解错的话,你的意思是,用WebService来验证用户名和密码,存在的
话,下次就不用再验证了,直到网页关闭是吧?

你可以将验证写一个WebService方法,返回string类型,字符串,如果没有,定义一个常量来代表
没有,如果有,就返回用户名和密码,或者返回你的用户类实体,有就返回实体,没有就返回null
然后将实体或者字符串存进session,在本次会话没有关闭的时候session都是可用的,那么你
要跳转之类的,再要进行验证,只需拿出session里的数据进行判断既可,具体如下:

Session["user"] = WebService.CheckLogin(name,pwd);

在别的也面验证的话,一般都是看它的权限,如果还想验证是否存在此用户,只需
if(Session["user"]!= null)
如果要验证权限
User user = (User)Session["user"];
if(user.roleId == "")
{

}
希望对你有帮助
zhongjiekangping 2009-10-10
  • 打赏
  • 举报
回复
up
wanzhigang 2009-09-28
  • 打赏
  • 举报
回复
呵呵,你已经知道解决办法了,就是COOKIE和SESSION,但我无法详解,详解只能看书。cookie保存用户名和密码不安全,所以推荐使用session,session可以实现你要求的关闭浏览器就无效的要求,我只能告诉你简单的使用方法。
在你的WebService方法中可以这样使用
Session["变量名"]=123;
int a=(int)Session["变量名"];
a此时等于123
很简单吧。
不过你还需要将你的[WebMethod]改成[WebMethod(EnableSession=true)]才可以在此方法中使用session
zyug 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wanzhigang 的回复:]
呵呵,你已经知道解决办法了,就是COOKIE和SESSION,但我无法详解,详解只能看书。cookie保存用户名和密码不安全,所以推荐使用session,session可以实现你要求的关闭浏览器就无效的要求,我只能告诉你简单的使用方法。
在你的WebService方法中可以这样使用
Session["变量名"]=123;
int a=(int)Session["变量名"];
a此时等于123
很简单吧。
不过你还需要将你的[WebMethod]改成[WebMethod(EnableSession=true)]才可以在此方法中使用session
[/Quote]


楼上真英明....不过Session默认的实现方式是基于Cookie的
不过我可以提示楼主.你如果启用了Form验证.也就是cookie与httpmoudle的 实现方式, 那么.Webservice也可以获取到相应的登陆状态

如果你要构造相应的winform应用程序访问,你可能要构造相应的cookie,使用cookiecontainer或是添加相应的httpheader.

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧