说明:这个不是在进行微信公众号开发,也就是说在不能获取用户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. spring+mybatis+springmvc的配置

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?><web-app version=&qu ...

  2. 隔壁信概大作业xjb写——同化棋ATAXX

    话说泥萌北大信科啊,助教是有多懒...去年黑白棋今年同化棋,顺带打ai都不用自己写标程... 好吧..我知道泥萌重点在各种sb的辅助操作上..什么悲剧的可以随时暂停载入...有毒吧 [据说泥萌上课没讲 ...

  3. 实现UniqueAttribute唯一性约束,sqlunique约束[转]

    using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace Zwj.T ...

  4. iis里面浏览网页,提示找不到应用程序的解决办法

    iis配置成功,数据库链接正确,代码无误,在iis里面,浏览某网页,提示找不到应用程序,这时一下子懵了. 处理办法:在浏览器中直接输入网址,例如:http://192.168.1.111,这时能够打开 ...

  5. 基于KEIL4开发ARM9(S3C2440)的裸机程序

    本文主要介绍如何使用Keil4开发ARM9(S3C2440)裸机程序. 说明: 一.平台: 操作系统:Windows XP系统 KEIL版本:4.73 开发板:ARM9(S3C2440) 二.建立工程 ...

  6. jquery实现checkbox全选和全部取消,以及获取值

    在后台管理中经常会遇到列表全选和取消的功能,如评论审核.申请等,用到的html标记就是checkbox.我用的是mysql数据库,代码如下: <!DOCTYPE html PUBLIC &quo ...

  7. git 小结

    git cherry-pick de0ec64  可将另一个分支中的提交 cherry-pick到当前分支来

  8. 课程笔记:——javascript中的预解释2

    in:检测某一个属性是否属于这个对象(既可以检测私有的属性,也可以检测公有的属性) --> attr in obj 1.不管条件是否成立,在预解释的时候,判断体中的带var和function的都 ...

  9. Groovy解析xml并且注入Project,TestSuite,TestCase级别的custom properties

    import com.eviware.soapui.support.GroovyUtils import groovy.util.XmlParser def groovyUtils = new Gro ...

  10. git分支

    git的分支是一个版本库.检出分支分支会影响暂存区和工作区的内容. 创建分支:git branch [testing] 检出分支:git checkout [testing] 创建并且检出分支:$gi ...