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

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

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

3. 代码

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

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

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

(利用tempdata判断action是直接被访问还是重定向访问)防止微信活动中用户绕过关注公众号的环节的更多相关文章

  1. java后端判断用户是否关注公众号

    /** * 判断用户是否关注了公众号 * @param openid * @return */ public static boolean judgeIsFollow(String openid){ ...

  2. 微信小程序内判断是否关注公众号(JAVA)

    微信小程序内判断是否关注公众号(JAVA) 思路来源(第二种): https://blog.csdn.net/Yanheeee/article/details/117295643 /** * 总体思路 ...

  3. Asp.Net MVC 利用ReflectedActionDescriptor判断Action返回类型

    System.Web.Mvc.ReflectedActionDescriptor descriptor = filterContext.ActionDescriptor as System.Web.M ...

  4. 微信openid和UnionID (多公众号如何判断是否是同一人)

    以下内容源于网络,因为非博客园信息,有想收藏,只能直接复制粘贴了,还希望原稿人员理解. 微信公众平台更新,为开发者提供UnionID机制 经开发者反馈,由于同一公司下多个公众号之间需要用户帐号互通,微 ...

  5. php判断正常访问和外部访问

    php判断正常访问和外部访问 <?php session_start(); if(isset($_POST['check'])&&!empty($_POST['name'])){ ...

  6. 利用LoadRunner判断HTTP服务器的返回状态

    利用LoadRunner判断HTTP服务器的返回状态第一种方法:是利用LR的内置函数web_get_int_property.举例:#include "web_api.h"Acti ...

  7. 利用try-catch判断变量是已声明未声明还是未赋值

    原文 利用try-catch判断变量是已声明未声明还是未赋值 这篇文章主要介绍了利用try-catch判断变量是已声明未赋值还是未声明,需要的朋友可以参考下 目的是如果一个变量是已声明未赋值,就可以直 ...

  8. 利用HTML5判断用户是否正在浏览页面技巧

    现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用visibilitychange页面事件来判断当前页面可见性的状态,并针对性的执行某些任务.同时还有新的document.hidde ...

  9. x64系统的判断和x64下文件和注册表访问的重定向——补记

    原来的地址 x64系统的判断和x64下文件和注册表访问的重定向(1) x64系统的判断和x64下文件和注册表访问的重定向(2) x64系统的判断和x64下文件和注册表访问的重定向(3) 之前在(3)里 ...

随机推荐

  1. file_put_contents保存数据,

    file_put_contents("sui.txt", var_export($now_member,TRUE),FILE_APPEND); 可以保存数组,方便调试

  2. sql sever读取Excel总结【转】

    主要用到openrowset,opendatasource系统函数,这两个函数任意一个都能完成任务 用这种方法可以实现Excel和sqlserver表之间的相互导入导出. openrowset的写法 ...

  3. hibernate连接数据库的步骤

    三个准备 一.导包   mysql二.在默认src下创建hibernate.cfg.xml   1.创建xml文件,命名为hibernate.cfg.xml 2.添加约束   (在org.hibern ...

  4. string to byte[]

    在平常的开发过程中,经常碰到需要将string转化成byte[]字节数组的情形,有两种方法,在这里总结一下. 使用MemoryStream 代码如下. using (MemoryStream sb = ...

  5. Dom学习笔记

    今天老师出了一道面试题目:取到表单里面的textbox的值,两种方法.知道一种,老师说的什么dom,我竟然不知道. 以前学html的时候,老师也重来没有提到dom的概念.javaScript只是学了一 ...

  6. Ajax 语法

    /*** * ajax语法 * * ***/ $.ajax({ async:false, //同步请求 url:"XXXXX.do",//请求后台地址 data: {"p ...

  7. 你可能不知道的iOS冷知识——#pragma

    Mattt Thompson撰写. Zihan Xu翻译. 发布于2012年10月1日 #pragma 声明是彰显 Objective-C 工艺的标志之一.虽然 #pragma 最初的目的是为了使得源 ...

  8. little tips of painter.drawRect in Qt

    一个QImage或QPixmap新建变量时,第一次填充图片时设置的宽高正常(fill),其后的绘制操作(draw)则会在绘制的矩形底边和右边加上painter.pen().width() 在下面代码1 ...

  9. windows 下用eclipse搭建java、python开发环境

    本人只针对小白!本文只针对小白!本文只针对小白! 最近闲来无事,加上之前虽没有做过eclipse上java.python的开发工作,但一直想尝试一下.于是边查找资料边试验,花了一天时间在自己的机器上用 ...

  10. SQLite常用命令总结

    1) 创建数据库文件: >SQLite3 d:\test.db 回车 就生成了一个test.db在d盘. 这样同时也SQLite3挂上了这个test.db 2) 用.help可以看看有什么命令 ...