当前位置: 首页 > news >正文

网站维护中是怎么回事南宁定制网站建设

网站维护中是怎么回事,南宁定制网站建设,精品无人区高清不用下载,企业建设网站有什么作用思路 封禁业务也是在一般项目中比较常见的业务。我们也将它封装在库中作为功能之一。 我们同样使用adapter作为底层的存储结构#xff0c;将封禁标示作为k-v结构存储。 把id和服务名称service作为key#xff0c;把封禁的级别level作为value#xff0c;以此我们能实现一些比…思路 封禁业务也是在一般项目中比较常见的业务。我们也将它封装在库中作为功能之一。 我们同样使用adapter作为底层的存储结构将封禁标示作为k-v结构存储。 把id和服务名称service作为key把封禁的级别level作为value以此我们能实现一些比较常见的封禁业务。 实现 首先就是封禁方法首先当然要校验一下参数然后存储封禁标识。要注意的就是level要大于等于1在封禁后也要调用我们的logger和watcher。 // Banned ban user, if time 0,the timeout is not set func (e *Enforcer) Banned(id string, service string, level int, time int64) error {if id || service {return fmt.Errorf(parameter cannot be nil)}if level 1 {return fmt.Errorf(unexpected level %v, level must large or equal 1, level)}err : e.adapter.SetStr(e.spliceBannedKey(id, service), strconv.Itoa(level), time)if err ! nil {return err}// callbacke.logger.Ban(e.loginType, id, service, level, time)if e.watcher ! nil {e.watcher.Ban(e.loginType, id, service, level, time)}return nil } 再来就是解除封禁的实现很简单只要删除我们封禁存的那条记录就可以了。 // UnBanned Unblock user account func (e *Enforcer) UnBanned(id string, services ...string) error {if id {return fmt.Errorf(parmeter id can not be nil)}if len(services) 0 {return fmt.Errorf(parmeter services length can not be 0)}for _, service : range services {err : e.adapter.DeleteStr(e.spliceBannedKey(id, service))if err ! nil {return err}e.logger.UnBan(e.loginType, id, service)if e.watcher ! nil {e.watcher.UnBan(e.loginType, id, service)}}return nil } 接着还需要提供几个方便使用的方法 分别用来判断是否被封禁获得封禁的级别获得封禁的剩余时间三个方法 判断是否被封禁 // IsBanned if banned return true, else return false func (e *Enforcer) IsBanned(id string, services string) bool {s : e.adapter.GetStr(e.spliceBannedKey(id, services))return s ! }获得封禁的级别 go复制代码// GetBannedLevel get banned level func (e *Enforcer) GetBannedLevel(id string, service string) (int64, error) {str : e.adapter.GetStr(e.spliceBannedKey(id, service))if str {return 0, fmt.Errorf(loginId %v, service %v is not banned, id, service)}time, err : strconv.ParseInt(str, 10, 64)if err ! nil {return 0, err}return time, nil }获得封禁的剩余时间 go复制代码// GetBannedTime get banned time func (e *Enforcer) GetBannedTime(id string, service string) int64 {timeout : e.adapter.GetStrTimeout(e.spliceBannedKey(id, service))return timeout }有了这几个方法我们就可以使用token-go更为方便是实现登录业务了。 对于一般的业务我们其实可以无视封禁级别。只需要使用Banned()进行封禁在每个需要校验是否被封禁的业务前进行IsBanned()的判断就行了。 测试例子 go复制代码func TestEnforcer_Banned(t *testing.T) {err, enforcer, _ : NewTestEnforcer(t)if err ! nil {t.Fatalf(NewTestEnforcer() failed: %v, err)}err enforcer.Banned(1, comment, 1, 100)if err ! nil {t.Fatalf(Banned() failed: %v, err)}isBanned : enforcer.IsBanned(1, comment)if !isBanned {t.Errorf(unexpected isBanned is false)}err enforcer.UnBanned(1, comment)if err ! nil {t.Fatalf(UnBanned() failed: %v, err)}isBanned enforcer.IsBanned(1, comment)if isBanned {t.Errorf(unexpected isBanned is false)} }当然我们对于一个业务会有一些较为复杂的封禁比如discuss交流业务如果级别为1我们会禁止评论如果级别为2我们会禁止评论和点赞级别为3我们会禁止评论、点赞和收藏。 这个时候我们只需要再加上GetBannedLevel()在每个业务前获取封禁级别进行判断就可以简单的实现了。
http://www.dnsts.com.cn/news/185572.html

相关文章:

  • 做论坛网站需要多少钱绵阳市建设局官方网站
  • 宁远县建设局网站大城网站优化
  • 小型网站建设源码wordpress 社区 插件
  • 国外室内设计网站大全网站导视设计论文
  • 一个人做网站时间优化网站建设seo
  • 网站开发南京招聘婚纱摄影店排名前十名
  • asp.net做网站怎么样wordpress菜单页面顺序
  • 外贸网站推广多少费用网络编程软件
  • 公司网站的seo优化做个网站要多久
  • 青岛网站制作流程网站首页html代码的
  • 钢管公司网站建设企业宣传片制作
  • 固原市建设局网站怎么买wordpress
  • 高密建设局网站做网站好找工作吗
  • 物流网站建设可行性报告知名的设计公司网站
  • 广州新际网站建设百度人工服务24小时
  • 阿里云建站文章搜索网页制作的公司排名
  • 个人公众号做网站合肥网站建设设计外包
  • 增城网站建设价格深圳头条新闻
  • 襄阳专业做网站寻乌建设局网站
  • 微信小程序展示网站建设多少钱廊坊网站推广外包
  • 做企业网站的要点平面设计要素
  • 大型网站建设推广设计托管网站建设
  • 烟台城乡建设局官方信息网站浅谈天猫的电子商务网站建设
  • 网站建设与管理和电子商务哪个好wordpress标签数量
  • 网站建设报表明细wordpress无插件主题
  • 浙江二建建设集团有限公司网站网站建设中布局
  • 软件工程项目管理英文seo 文章发布类网站
  • 网站建设是怎么赚钱免费做苗木网站
  • 做水果蔬菜生意网站上海网站建设系统
  • 企业网站建设申请怎么写今天的新闻内容