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

wordpress小说站模版蛋糕店网站建设方案

wordpress小说站模版,蛋糕店网站建设方案,彩票网站开发 添加彩种教程,wordpress 简洁模板整个系统的第一个层次已经开发完毕#xff0c;已经有简单的中控#xff0c;登录、退出、延迟登录时长、黑名单、数据层封装、验证层封装、RSA加解密、Redis等功能#xff0c;还缺获取个人、角色按钮权限、角色菜单权限功能。角色按钮权限以及角色菜单权限等明后天开发#…        整个系统的第一个层次已经开发完毕已经有简单的中控登录、退出、延迟登录时长、黑名单、数据层封装、验证层封装、RSA加解密、Redis等功能还缺获取个人、角色按钮权限、角色菜单权限功能。角色按钮权限以及角色菜单权限等明后天开发今天先开发个人信息接口以便测试使用。 一、个人信息接口开发 1、添加路由 在根目录下route文件夹中的app.php文件中加入以下代码 Route::post(member/personal_data,permission.Member/personalData); 2、代码开发 在根目录下app文件夹下的controller文件夹中创建文件夹并命名为permission然后在permission文件夹中创建控制器并命名为Member然后在Member文件中继承Base总控制后并创建personalData方法。具体代码如下 ?php /*** 个人信息控制-也就是登录者信息及角色对外方法* User: 龙哥·三年风水* Date: 2024/10/30* Time: 14:18*/ namespace app\controller\permission; use app\controller\Base; class Member extends Base {/*** 获取个人信息* User: 龙哥·三年风水* Date: 2024/10/30* Time: 14:23* return \think\response\Json*/public function personalData(){$data [];$data[username] $this-username;$data[avatar] $this-avatar;$data[email] $this-email;$data[realname] $this-realname;return succ(操作成功,$data);} } 二、nginx黑名单开发 因nginx自身是没有redis及rsa扩展使用的所以我安装的不是nginx而是openresty他是有带resty扩展的。如果不会安装openresty可以参照《centos7 二进制安装openresty》、《配置openresty》以及《openresty安全机制-白名单》三篇文章进行安装配置。 1、引入扩展 --引入Redis local redis require resty.redis; --引入rsa local rsa require resty.rsa; 2、配置redis --Redis链接ip local ip 172.20.36.144 --Redis链接端口 local port 6379 --Redis连接密码 local pass QXtrPxjoLenGon 3、在对应的Redis库里面添加公钥字符串 我不管是在应用程序里面还是在本机制里面都采用的是Redis第0号库的black-list库中哈所有的非正常访问系统的IP都在black-list库中。 4、开发lua对应的Redis授权 --鉴权Redis local function connAuth()local red redis:new();local connCount, err red:connect(ip, port);if not connCount thenngx.say(failed to connect: , err)close_redis(red)returnendred:set_timeouts(2000);local ok, err red:auth(pass)if not ok thenngx.say(failed to auth: , err)close_redis(red)returnendreturn red end 5、开发lua对应的Redis关闭 --关闭Redis local function close_redis(red)if not red thenreturnend--释放连接(连接池实现)local pool_max_idle_time 10000local pool_size 100local ok, err red:set_keepalive(pool_max_idle_time, pool_size)if not ok thenngx.say(set keepalive error : , err)end end 6、开发获取请求者IP --获取请求者IP local function getIp()local clientIP ngx.req.get_headers()[X-Real-IP]if clientIP nil thenclientIP ngx.req.get_headers()[x_forwarded_for]endif clientIP nil thenclientIP ngx.var.remote_addrendreturn clientIP end --获取用户访问IP local clientIP getIp(); --封禁token时间秒 local token_block_time 120 --指定token访问频率计数最大值次 local token_max_count 3 7、开发空方法 --如果数据为空的情况下 local function is_empty(value)if type(value) table thenreturn next(value) nilelseif type(value) string thenreturn #value 0elseif type(value) nil thenreturn trueendreturn false end 8、过滤特殊字符串 --过滤特殊字符串(只保留字母与数字,字母不区分大小写) local function filter_special_chars(s)local ss {}local k 1while true doif k #s then break endlocal c string.byte(s,k)if not c then break endif c192 thenif (c48 and c57) or (c 65 and c90) or (c97 and c122) thentable.insert(ss, string.char(c))endk k 1endendreturn table.concat(ss) end 9、组合开发黑名单机制 --引入Redis local redis require resty.redis; --引入rsa local rsa require resty.rsa; --Redis链接ip local ip 172.20.36.144 --Redis链接端口 local port 6379 --Redis连接密码 local pass QXtrPxjoLenGon --鉴权Redis local function connAuth()local red redis:new();local connCount, err red:connect(ip, port);if not connCount thenngx.say(failed to connect: , err)close_redis(red)returnendred:set_timeouts(2000);local ok, err red:auth(pass)if not ok thenngx.say(failed to auth: , err)close_redis(red)returnendreturn red end--关闭Redis local function close_redis(red)if not red thenreturnend--释放连接(连接池实现)local pool_max_idle_time 10000local pool_size 100local ok, err red:set_keepalive(pool_max_idle_time, pool_size)if not ok thenngx.say(set keepalive error : , err)end end--获取请求者IP local function getIp()local clientIP ngx.req.get_headers()[X-Real-IP]if clientIP nil thenclientIP ngx.req.get_headers()[x_forwarded_for]endif clientIP nil thenclientIP ngx.var.remote_addrendreturn clientIP end --获取用户访问IP local clientIP getIp(); --封禁token时间秒 local token_block_time 120 --指定token访问频率计数最大值次 local token_max_count 3--如果数据为空的情况下 local function is_empty(value)if type(value) table thenreturn next(value) nilelseif type(value) string thenreturn #value 0elseif type(value) nil thenreturn trueendreturn false end--过滤特殊字符串(只保留字母与数字,字母不区分大小写) local function filter_special_chars(s)local ss {}local k 1while true doif k #s then break endlocal c string.byte(s,k)if not c then break endif c192 thenif (c48 and c57) or (c 65 and c90) or (c97 and c122) thentable.insert(ss, string.char(c))endk k 1endendreturn table.concat(ss) end--如果头部信息没有指定的参数或是指定参数的值无法解析,加入IP黑名单 --如果同样的头部参数键在封禁token时间内连续访问指定token访问频率计数最大值次以上,加入IP黑名单----暂时还没有开发开发测试好后将重新更新 local function set_blacklist()local header ngx.req.get_headers();local red connAuth();local token, err header[Authorization];-- 如果参数为空的情况下if not token thenlocal res, err red:sismember(black-list, clientIP);if res ~ 1 thenred:sadd(black-list, clientIP)endclose_redis(red)return ngx.exit(401)else-- 如果参数值为空的情况下if is_empty(token) thenlocal res, err red:sismember(black-list, clientIP);if res ~ 1 thenred:sadd(black-list, clientIP)endclose_redis(red)return ngx.exit(401)end-- 如果参数值采用base64解析不开的情况下local encrypted, err tostring(ngx.decode_base64(token))if not encrypted thenlocal res, err red:sismember(black-list, clientIP);if res ~ 1 thenred:sadd(black-list, clientIP)endclose_redis(red)return ngx.exit(401)end-- 采用rsa技术解析token base64过后的值内容local priv_key -----BEGIN PRIVATE KEY-----\n ..red:get(priv_key_cluster_control)..\n-----END PRIVATE KEY-----;local priv, err rsa:new({private_key priv_key})local dst, err rsa.decrypt(priv, encrypted)if not dst thenlocal res, err red:sismember(black-list, clientIP);if res ~ 1 thenred:sadd(black-list, clientIP)endclose_redis(red)return ngx.exit(401)endend end-- 查看是否在黑名单里面 local function get_blacklist()local red connAuth();local res, err red:sismember(black-list, clientIP);if res 1 thenclose_redis(red);return ngx.exit(401);endclose_redis(red); endget_blacklist(); set_blacklist(); 10、将开发好的lua文件也一并上传到网站目录中然后更改nginx应用配置文件然后重新启动nginx代码如下 server {listen 80;server_name controlapi.yuanlongsoftware.cn;error_log /data/nginx/controlapi.yuanlongsoftware.cn80_error.log crit;access_log /data/nginx/controlapi.yuanlongsoftware.cn80_acess_$logdate.log access-upstream;lua_code_cache off;autoindex off;server_tokens off;error_page 401 /401.html;location / {if ($request_method ~* OPTIONS) {return 200;}access_by_lua_file /data/wwwroot/teach/group_control/cluster_control/rsa-cluster-control.lua;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Headers X-Requested-With,Cache-Control,Content-Type,Authorization;add_header Cache-Control no-cache;add_header Access-Control-Allow-Methods GET, POST;proxy_pass http://controlapi;}location /401.html {root /data/wwwroot/error;} } 三、测试 1、登录后用token去获取一下用户信息接口采用apipost工具测试 2、采用同一个token再次去获取一下用户信息接口采用apipost工具再次测试 3、采用同一个token再次去获取一下用户信息接口采用apipost工具再次测试 第二次以后就是openresty直接返回咯因lua去检测是发现他就在黑名单中就直接返回。 其实后期我还会出对应的精简文章也就是优化过后的文章。 四、提前说明 明后天将带来管理员功能开发、角色功能开发、菜单功能开发以及上传文件开发
http://www.w-s-a.com/news/277232/

相关文章:

  • 做家电网站做网站美工需要会什么软件
  • 深圳营销型定制网站开发1000建设银行网站特点分析
  • 安装网站系统重庆知名网站
  • 巴彦淖尔市 网站建设怀化北京网站建设
  • 内部网站管理办法建立网站后台
  • 自学考试网站建设与管理郑州网站建设开拓者
  • 宁夏制作网站公司慈溪建设集团网站
  • 国家企业官方网站查询系统站酷设计网站官网入口文字设计
  • 彩票网站开发制作需要什么wordpress连接微博专业版v4.1
  • 孝感建设银行官网站百度一下你就知道啦
  • 做网站如何做视频广告制作公司简介怎么写
  • 做网站 买空间商务网站内容建设包括
  • 萝岗网站建设为什么点不开网站
  • 惠州网站制作询问薇北京网站建设最便宜的公司
  • 注册网站英语怎么说wordpress 3.8.3
  • 甘肃张掖网站建设网站开发软件是什么专业
  • 海口省建设厅网站网站数据库怎么做同步
  • 做网站建设月收入多少app开发公司广州英诺
  • 新闻播报最新网站优化外包费用
  • wordpress分页出现404最专业的seo公司
  • 连云港网站建设电话连云港市建设局网站
  • 平面设计网站有哪些比较好drupal网站建设 北京
  • 健康资讯网站模板网页价格表
  • 2008发布asp网站宝安建网站的公司
  • 郑州市城市建设管理局网站制作公司网站 优帮云
  • 网站开发 瀑布结构普陀网站建设
  • 12380网站建设情况汇报plone vs wordpress
  • c 网站开发数据库连接与wordpress类似的都有哪些
  • 状元村建设官方网站长春做网站seo的
  • 做金融资讯网站需要哪些牌照海珠营销型网站制作