说明:这个不是在进行微信公众号开发,也就是说在不能获取用户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. 最近在做外贸网站的时候,需要大量的字体来充实页面,就学习了怎么引用Google Fonts

    第一步,FQ进入谷歌官方字体网站:https://fonts.google.com  妥妥的. 第二步,点击你所选择字体演示块的右上角的加号,然后你所选择的字体会形成引用链接以及你所要写的css样式. ...

  2. HDU 3966 Aragorn's Story 树链剖分+树状数组 或 树链剖分+线段树

    HDU 3966 Aragorn's Story 先把树剖成链,然后用树状数组维护: 讲真,研究了好久,还是没明白 树状数组这样实现"区间更新+单点查询"的原理... 神奇... ...

  3. 分治法解决合并排序(c++和Java源代码)

    Java源代码 public class Mergesort1 { public static void merge(int[]a,int low,int mid,int high){//对两组已经排 ...

  4. Qt:Drag-Drop操作在QGraphicsView及Model/View框架下的实现

    最近使用到Qt的Drag Drop功能,结合自己的例子写下来给大家分享一下.实现从QTreeView拖动Node到QGraphicsView上,以及QGraphicsView上item之间的拖动. 先 ...

  5. UIPIckerView现实城市选择

    实现城市选择,选中省时,后来自动显示相对应的城市,并且下面会打印出来对应的省和城市 . 因为plist里面是一个一个的字典. 1.字典转模型 HMCities.h #import <Founda ...

  6. PHP 捕捉错误,记录到日志

    register_shutdown_function("shutdown"); define('ERR_LOG_FILE', '/dev/shm/php_log.txt'); if ...

  7. JAVA 序列化

    一.概念 序列化:将对象转换为字节序列的过程. 反序列化:将字节序列恢复为对象的过程. 二.简单示例 package serialization; import java.io.Serializabl ...

  8. 配置DelegatingFilterProxy使用Spring管理filter chain

    项目环境:JDK7 + Maven3.04 0. 项目使用springmvc作为controller层 1. 引入spring-security <dependency> <grou ...

  9. Android按钮的各个样式设置

    安卓开发学习之014 Button应用详解(样式.背景.按钮单击.长按.双击.多击事件) 一.Button简介 按钮也是继承自TextView 二.XML定义方法 <Button android ...

  10. Cheap Hollister Clothing

    (link to hollisterco site), Spectacles don't simply take care of the eye area inside sun; Putting th ...