PHP-C SHARP+php权限验证问题
我现在有个权限验证+登录的流程实际情况如下:
1.通过c sharp(类似qq登录器.exe的运行文件) 调用login.php
c sharp完成读取客户端真实的网卡地址。login.php 调用java的api获取用户信息验证(密码校验,可用权限列表,可用action列表)
2.成功后:
把用户权限写到memcache,获取的网卡地址与用户表的网卡地址校对。
把登录的用户名写入cookie(这里本来想用session,但是c sharp在打开网页前没有创建SEESIONID,所以用不了session)以保证该用户已经登录,作为用户权限写入memcache的key(通过加密作了处理)
最后:成功弹出管理后台的网页。
权限验证方式:
a.php?act=action
a.php extends AdminBase.php
这样在adminBase.php获取当前访问的url+action,在根据cookie为key到memcache取出action列表,判断action 是否存在。
问题:
1.cookie老有隐患,如果在win7下因为c sharp是.exe文件如果不用administrator用户打开会写入cookie失败。所以获取权限不到,但是c sharp登录框验证已经提出成功了。弹出网页一样失败,不能访问后台。
2.cookie唯一标识用户登录的。因为根据当前cookie的uname到memcache验证。(一直因为不是很理想)
3.另外有做登录超时
4.所有继承的adminBase.php的文件都要走一次权限验证所以 这里设计也不理想。应该所有可访问的文件才走权限验证。不可访问的操作类继承adminBase.php也不需要验证。
大家一起讨论下优化的方案。谢谢。尽量小改的情况下,项目已经上线。
登录成功后返回类似以下信息
1.是否成功
2.如果成功生成一串加密的验证串,里面可以带用户ID 用户名 有效期等信息。不过是加密,用内部算法可以解密。
c#拿到这串后,打开管理后台,并带上这个串,管理后台验证这个串并解密用户信息,解密成功的话就是登录状态。接下来可以走SESSION或COOKIE做认证