分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

调用WebService时加入身份验证,以拒绝未授权的访问

发布时间:2023-09-06 01:17责任编辑:彭小芳关键词:Web

众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。

方法一:在WebService中引入SoapHeader

[c-sharp]view plain copy
  1. #region配置登录标头
  2. ///<summary>
  3. ///CodeCreateByBanLao
  4. ///</summary>
  5. publicclassMySoapHeader:SoapHeader
  6. {
  7. privatestringstrUserName=string.Empty;
  8. privatestringstrPassWord=string.Empty;
  9. publicMySoapHeader(){}
  10. publicMySoapHeader(stringusername,stringpassword)
  11. {
  12. this.strUserName=username;
  13. this.strPassWord=password;
  14. }
  15. #region构造用户名|密码
  16. ///<summary>
  17. ///用户名
  18. ///</summary>
  19. publicstringUserName
  20. {
  21. get{returnstrUserName;}
  22. set{strUserName=value;}
  23. }
  24. ///<summary>
  25. ///密码
  26. ///</summary>
  27. publicstringPassWord
  28. {
  29. get{returnstrPassWord;}
  30. set{strPassWord=value;}
  31. }
  32. #endregion
  33. #region检测是否正确登录
  34. ///<summary>
  35. ///检测是否正确登录
  36. ///</summary>
  37. ///<returns></returns>
  38. publicboolCheckLogin()
  39. {
  40. if(strUserName=="合法登录名"&&strPassWord=="合法登录密码")
  41. {
  42. returntrue;
  43. }
  44. else
  45. {
  46. returnfalse;
  47. }
  48. }
  49. #endregion
  50. }
  51. #endregion

加入一个服务用于测试:

[c-sharp]view plain copy
  1. #region测试连接
  2. [System.Web.Services.Protocols.SoapHeader("myHeader")]
  3. [WebMethod(Description="判断用户是否开通",EnableSession=true)]
  4. publicstring_GetValue(stringstrInputValue)
  5. {
  6. if(myHeader.CheckLogin())
  7. {
  8. stringstrReturnValue=strInputValue+"@CopyRightByBanLao2010";
  9. returnstrReturnValue;
  10. }
  11. else
  12. {
  13. return"无效的身份验证,请重试!";
  14. }
  15. }
  16. #endregion

至此我们想要的需要通过身份验证的服务配置好了,下面让我们进行一些测试,新建一个webForm在Page_Load中:

[c-sharp]view plain copy
  1. WebLogon.MySoapHeadermyHeader=newWebLogon.MySoapHeader();
  2. myHeader.UserName="约定的合法用户";
  3. myHeader.PassWord="约定的合法密码";
  4. WebLogon.ServiceThis_Service=newWebLogon.Service();
  5. This_Service.MySoapHeaderValue=myHeader;
  6. Response.Write(This_Service._GetValue("ThisisBanLao‘sTestApplicationForSoapHeader."));

当运行这个WebForm时,如果用户名和密码是正确的我们将看到:

This is BanLao‘s Test Application For SoapHeader.@CopyRight By BanLao 2010

否则

无效的身份验证,请重试!

方法二:Web Service以Session方式验证

[c-sharp]view plain copy
  1. [WebMethod(Description="检测是否正确登录",EnableSession=true)]
  2. publicboolCheckLogin(stringstrUserName,stringstrPassword)
  3. {
  4. if(strUserName.Equals("admin")&&strPassword.Equals("123456"))
  5. {
  6. Session["LoginState"]=true;
  7. }
  8. else
  9. {
  10. Session["LoginState"]=false;
  11. }
  12. return(bool)Session["LoginState"];
  13. }
  14. #region测试连接
  15. [WebMethod(Description="测试连接",EnableSession=true)]
  16. publicstring_GetValue(stringstrInputValue)
  17. {
  18. if(Session["LoginState"]==null||Session["LoginState"].Equals(false))
  19. {
  20. return"无效的身份验证,请重试!";
  21. }
  22. else
  23. {
  24. stringstrReturnValue=strInputValue+"@CopyRightByBanLao2010";
  25. returnstrReturnValue;
  26. }
  27. }
  28. #endregion

调用该服务,

[c-sharp]view plain copy
  1. WebLogon.ServiceThis_Service=newWebLogon.Service();
  2. This_Service.CookieContainer=newSystem.Net.CookieContainer();
  3. if(This_Service.CheckLogin("admin","123456"))
  4. {
  5. Response.Write(This_Service._GetValue("ThisisBanLao‘sTestApplicationForSession."));
  6. }

当运行这个WebForm时,如果用户名和密码是正确的我们将看到:

This is BanLao‘s Test Application For Session.@CopyRight By BanLao 2010

否则

无效的身份验证,请重试!

注:如果需要多个合法用户,可以在WebService中声明判断即可

调用WebService时加入身份验证,以拒绝未授权的访问

原文地址:http://www.cnblogs.com/zxh1919/p/7670039.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved