说明:这个不是在进行微信公众号开发,也就是说在不能获取用户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. chrome 扩展包 postman 的安装

    由于chrome网上应用不能使用.添加扩展程序,需要其他的办法. 1.下载postman安装包.下载地址 2.这一步按照这个下载包中的方法,也可以,可以忽略其错误. 先解压出crx,使用两个办法,使用 ...

  2. Objective-C( Foundation框架 一 NSFileManager)

    NSFileManager 用来管理文件系统的 它可以用于常见的文件,文件夹操作(拷贝,剪切,创建) NSFileManager使用了单例模式(Singleton) 使用defaultManager可 ...

  3. JBoss-7.1.1 http访问端口修改

    修改http服务端口 找到 jboss-as-7.1.1.Final/standalone/configuration/standalone.xml文件,找到第298行,如下图: 如果我们想改成80端 ...

  4. c#实现远程操作svn

    /// <summary> /// 本地svn服务器地址 /// </summary> private static string localSVN = Configurati ...

  5. 关于vs调试中kaze时出现的问题

    在kaze程序中,调试时,会出现内存释放出现问题,导致调试失败. 解决方法:将主函数所在的源文件中的所有函数中的vector声明的向量都放在主函数外面,成为全局变量,让系统自己释放,再次调试就不会出现 ...

  6. 全端开发必备!10个最好的 Node.js MVC 框架

      Node.js 是最流行的 JavaScript 服务端平台,它允许建立可扩展的 Web 应用程序.Node.js 包含不同类型的框架,如 MVC 框架.全栈框架.REST API  以及大量的服 ...

  7. VUE JS 使用组件实现双向绑定

    1.VUE 前端简单介绍  VUE JS是一个简洁的双向数据绑定框架,他的性能超过ANGULARJS,原因是实现的机制和ANGULARJS 不同,他在初始化时对数据增加了get和set方法,在数据se ...

  8. Could not parse mapping document from input stream

    无法从输入流解析映射文档 1.定义的类名或属性名不对,如:*.hbm.xml文件中属性name对应的实体类name不一致.2.xml头文件中"http://www.hibernate.org ...

  9. 线程隔离ThreadLocal

    ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...

  10. LeetCode 4 Median of Two Sorted Arrays 查找中位数,排除法,问题拓展 难度:1

    思路:设现在可用区间在nums1是[s1,t1),nums2:[s2,t2) 1.当一个数组可用区间为0的时候,由于另一个数组是已经排过序的,所以直接可得 当要取的是最小值或最大值时,也直接可得 2. ...