博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(利用tempdata判断action是直接被访问还是重定向访问)防止微信活动中用户绕过关注公众号的环节...
阅读量:5297 次
发布时间:2019-06-14

本文共 2381 字,大约阅读时间需要 7 分钟。

说明:这个不是在进行微信公众号开发,也就是说在不能获取用户openid的前提下做的下面操作

1.动机:最近有个微信活动(关注了服务号的可以免费领取礼品),要做这么一个功能,活动的入口在微信服务号的菜单上,只有从这里链接过来的用户才有权限看到领取礼品的表单,否则就是引导关注微信服务号的链接,但是为了防止用户直接将活动也分享出去了,然后其他用户避开了关注微信这样一个环节,所有已关注的用户打开活动链接之后的地址和服务号上的入口链接地址不能一样

2. 意图:我想在服务号的入口上加上一个参数,标明是从微信过来的(表明是已经关注了服务号的),然后在用户打开活动的时候再想办法将这个参数去掉或者变成其他的参数,就能保证用户打开前跟分享的地址是不一样的;而这里我就利用了tempdata能在action之间传递数据的特性实现了这个功能

3. 代码

public ActionResult Topic_JieYuan()        {            int count = bllOrders.GetOrderCount();            ViewData["count"] = count;            if (Request["isweixin"] != null)  //表明是从微信过来的            {                TempData["isweixin"] = 1;                return RedirectToAction("Topic_JieYuan", "topic", new { isfirst = 1 }); //进行重定向生成新的url,新url地址中有一个参数是isfirst =1与最原始的url不一样(用户分享的话是新的url),当下次有人直接打开分享的地址时,由于TempData["isweixin"] = null所以不会运行 ViewData["isback"] = 1;这段(前台是根据 ViewData["isback"] = 1;来做一些权限判断显示的)            }            if (Request["isfirst"] != null && TempData["isweixin"] != null)            {                ViewData["isback"] = 1;            }                       return View("/Views/Topic/JieYuan/topicjieyuan.aspx");        }//同上  public ActionResult JieYuan()         {            //if (!Request.Headers["User-Agent"].Contains("MicroMessenger"))            //{            //    Response.Redirect("/topic/jieyuan.htm");            //    return View("/Views/Topic/JieYuan/topicjieyuan.aspx");            //}            if (Request["isback"] == null)            {                TempData["isweixin"] = 1;                return RedirectToAction("JieYuan", "topic", new { isback = 1 });                //Response.Redirect("/topic/jieyuan.htm?isweixin=1&isback=1");                //return View("/Views/Topic/JieYuan/topicjieyuan.aspx");            }            if (TempData["isweixin"] == null)            {                return RedirectToAction("Topic_JieYuan", "topic");            }            Hashtable htRegion = new Hashtable();            htRegion.Add("ParentId", 0);            List
listRegion = bllOrders.GetRegionsList(htRegion); ViewData["list"] = listRegion; return View("/Views/Topic/JieYuan/Index.aspx"); }
View Code

 PS:利用了tempdata能在action之间传递值的特性

ps:演化过程 要判断从微信来的和非微信来的链接-->(转化成)判断链接上是否带有isweixin的参数-->(而这个参数在程序中直接转化等同于了有没有tempdata)判断有没有tempdata-->然后根据有没有tempdata做相应的操作

转载于:https://www.cnblogs.com/lihongchen/p/4514688.html

你可能感兴趣的文章
带阻尼的磁流体方程组的整体适定性
查看>>
linux文件操作篇 (二) 打开和关闭文件
查看>>
Hadoop学习笔记—17.Hive框架学习
查看>>
云计算openstack共享组件(3)——消息队列rabbitmq
查看>>
Javascript设计模式之装饰者模式详解篇
查看>>
windows服务与自启动程序区别
查看>>
设计模式 - 代理模式(Proxy Pattern)
查看>>
mybatis-generator配置文件详解
查看>>
关于浏览器显示不出js的问题
查看>>
获取文件md5命令
查看>>
机器学习十大经典算法
查看>>
Vultr centost7一键安装BBR工具教程
查看>>
connect mysql
查看>>
SQL慢查询测试实践
查看>>
UWP开发砸手机系列(一)—— Accessibility
查看>>
javascript中的对象转数组的方法
查看>>
python小白-day8 socketserver模块
查看>>
HDU3560 Graph’s Cycle Component 图论基础题
查看>>
自我介绍
查看>>
我的第一个reactnative
查看>>