像segmentfault或知乎这样的注册账号后不激活无法提问是如何实现的?
回复内容:
是在用户表里加个字段,每次要提问时都查询一下么?
简单来说,是这样的。
你可以参考Leancloud的默认用户表,看下图,一个字段存邮箱地址(string),一个字段存邮箱是否验证过(bool)。
然后每次提问的时候就去查一下emailVerified字段是否为false。
在提问操作提交之后,先检测该用户的激活字段,True就允许,False就拦截
这就是很基本的权限验证啦,可能是一个bool,当然更加可能是一个整形或者整形中的某个位,猜测 seg 的权限等级用一个一个整形,权限级别可能划分为好多个段,可以参考这里:
http://segmentfault.com/repu?_ea=109887
撰写一个权限控制类
在控制类里面扩展方法
用户状态:0刚注册成功 1已验证 2封号
只有用户状态为1的才可以正常提问
我猜测,很可能就是数据库中的一个字段,status 里面就固定未激活。已激活等等状态,根据状态有一定的权限,然后登录后能做某些事,未激活的一点击提问就提示去绑定邮箱激活吧,
看了楼下的答案,我想到了就是用户登录后会把用户信息存到session中而不是每次用到的时候去查询数据库
肯定是在数据库一个字段表示验证状态,可为整形值或布尔值。
至于读取这个值,估计是放在系统的缓存中直接读取,而不是每次都要重新查询。
上一篇: javascript - 豆瓣读书的批注功能是如何实现的?
下一篇: PHP几个语法符号的有关问题