none
silverlight3如何禁止匿名访问webservice RRS feed

  • 问题

  • Silverlight3要调用webservice 要通过类似安全验证的东西来决定是否可以调用。

    如果匿名或者传入的username password不正确不允许调用。

    请问如何实现

    2010年4月18日 7:41

答案

  • Silverlight调WebService是不能添加SoapHeader的

    况且SoapHeader是明文传输的,存放用户密码很容易被截获

    我的做法是在宿主页面加载时跳过silverlight端直接调WebService,将用户密码存放在webservice的session中

    (如果宿主页面和webservice在同一个项目中,便不必再多写这个webmethod了)

    所有WebMethod调用时都要验证此session中的用户密码

    但session默认20分钟过期,所以silverlight端要写个timer,定时访问一下这个session,不需返回,每次访问都会延长20分钟

    • 已标记为答案 小达 2010年4月21日 3:40
    2010年4月20日 2:41

全部回复

  • 加入验证,你上google查一下WebService的用户认证就可以了,Silvelright是一样的。
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2010年4月18日 8:18
    版主
  •  

    但是WebService好像是异步的

    我生成的SoapHeader如何赋值呢?

    2010年4月19日 5:48
  • 对啊!都是异步的。所以你必须要等到异步的结果返回才能继续进行。


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2010年4月19日 10:46
    版主
  • Silverlight调WebService是不能添加SoapHeader的

    况且SoapHeader是明文传输的,存放用户密码很容易被截获

    我的做法是在宿主页面加载时跳过silverlight端直接调WebService,将用户密码存放在webservice的session中

    (如果宿主页面和webservice在同一个项目中,便不必再多写这个webmethod了)

    所有WebMethod调用时都要验证此session中的用户密码

    但session默认20分钟过期,所以silverlight端要写个timer,定时访问一下这个session,不需返回,每次访问都会延长20分钟

    • 已标记为答案 小达 2010年4月21日 3:40
    2010年4月20日 2:41
  • 我每次访问session好像不是同一个?

    2010年4月20日 3:45
  • 你好,

         因为BasicHttpBinding不支持WCF Session. 但是你可以开启AspNetCompatibilityMode,这样的话你可以直接在WCF中使用Asp.net的session

        还有WCF自己本身的Authorization.

        http://msdn.microsoft.com/en-us/magazine/cc948343.aspx#id0070004

    2010年4月21日 1:12