当前位置: 代码迷 >> PB >> 如何做WebService身份验证
  详细解决方案

如何做WebService身份验证

热度:31   发布时间:2016-04-29 06:52:27.0
怎么做WebService身份验证
本帖最后由 jjoulejcc 于 2013-03-03 09:35:24 编辑
假设服务端提供了一个方法of_ExecuteSql(String as_sql),这个方法很简单,就是执行一条SQL,然后返回是否执行成功的标记。那么在这个方法中,肯定得先验证用户的合法性吧,假设有一个表Users(UserId,Password),则of_ExecuteSql大概就应该这样写:

boolean of_ExecuteSql(String as_sql, String as_UserId, String as_password)
{
    // 使用as_UserId和as_password验证用户合法性
    if 非法用户 then
        return false
    else
        // 执行SQL
        ......
    end if
}

那么是不是所有的服务端方法我都得把用户ID和密码作为参数传进去呢,比如:
of_GetData(..., String as_UserId, String as_password)
of_Update(..., String as_UserId, String as_password)
感觉这样写很麻烦,不知道大家有什么好的方法,说出来交流下
webservice 身份验证

------解决方案--------------------
照理是这样的。
可以定义一个用于传送用户名和密码的结构,在WS方法里将其作为参数传入。
------解决方案--------------------
晕,我进了PB版面,我还以为自己在.NET版呢,不过你还是用WCF吧,WCF里面的功能很全的,认证功能已经包含了
------解决方案--------------------
BS与CS的不同之处,在于BS是无状态连接,下一个连接你不知道它是不是合适
所以一般http,都会使用cookie来进行认证.说白了,就靠保存在本地的cookie来识别每一次的连接是否是合法的

于是,可以借鉴这个思路,每当登录成功后,就分配一个唯一的标识给客户端,当要调用webservice的函数时,参数里带上该标识,用于服务端代码进行识别.

我现在是使用uuid进行标识.每一次登记成功,就分配一个uuid,并返回给客户端.该uuid会登记在数据库里进行识别.需要对uuid进行超时判断,如果超时,就在数据库里清掉该uuid,并有客户端提示"非法",让操作员重新登录系统.
  相关解决方案