比如,想在登陆时IP限制,某些版面对特殊IP才可见可发文,但同一个ID在不同IP的登录不
能相互影响权限(使用放在shm的user->userlevel就很buggy),这是最基本的一个需求
【 在 atppp (Big Mouse) 的大作中提到: 】
: 标 题: Re: 呵呵,来个稍微深刻点的,WEB下session变量的线程安全
: 发信站: 水木社区 (Wed Jan 10 15:32:48 2007), 转信
:
: 你在session_t里面加入了新的字段userlevel?
: kbs web的session控制相当的复杂,你这样做肯定是不行的,哪怕用进程模型也不行。
: 要搞清楚这一系列问题需要把php库代码整个读一遍然后得明白页面执行过程。
: 你就说你想达到什么目的,我来帮你看看应该怎么实现。
: 【 在 loseweigh (鹭鸶尾) 的大作中提到: 】
: : php没做任何改动
: : 因为在session_t中加入了userlevel字段,并且以下三个判断权限的函数
: : libBBS/site.c : check_read_perm()
: : libBBS/site.c : check_see_perm()
: : src/boards.c : has_post_perm()
: : 接口部分由2个参数变成3个(加入const session_t *session),与userec中的
: : userlevel共同决定权限,相当于一个权限可以通过永久授权获得,也可以在登陆
: : 时视Session上下文(如登录IP,身份认证令牌等)获得。因此,phplib中相应的接
: : 口有所改变。
: : 以上的改动大体属于telnet范畴,经过测试是完全可行的。
: : 但是,同样在控制登录部分的
: : lib/bbslib.c : www_user_login()
: : 中加入
: : getSession()->userlevel |= PERM_XXXXXX;
: : 无论在这个函数的哪个位置加入,在Web下都会有contention发生,getSession()->
: : userlevel完全失控,有时能得到PERM_XXXXXX有时得不到, 这个命中率ms和语句的
: : 位置还有那么点关系-__-!
: : 这些天为看到版面,狂练鼠标点击,卡基卡及,真是酷毙了 ;P
:
:
: --
:
: ※ 修改:·atppp 于 Jan 10 15:33:11 修改本文·[FROM: 59.66.77.*]
: ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.77.*]
--
修改:atppp FROM 59.66.77.*
FROM 218.249.29.*