当前位置: 首页 > news >正文

学网站开发的软件网络营销运营方案

学网站开发的软件,网络营销运营方案,哪里网站建设公司比较好,中文wordpress案例实现思想:每个页面打开的时候会在页面的隐藏控件自动生成一个值并将这个值赋值session,当提交方法的时候会在过滤器的时候进行获取session和页面传值过来的隐藏控件的值进行比较,如果值相同的话,重写session值。否则的话给出提示。…

实现思想:每个页面打开的时候会在页面的隐藏控件自动生成一个值并将这个值赋值session,当提交方法的时候会在过滤器的时候进行获取session和页面传值过来的隐藏控件的值进行比较,如果值相同的话,重写session值。否则的话给出提示。

ActionFilter:

using System;
using System.Web;
using System.Web.Mvc;
using EwayFramework.Utils.Token;

namespace EwayFramework.BaseController.Filter
{

/// <summary>
/// 防止重复提交
/// </summary>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class CurrentApproveActionFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// 审批页面的控制器+Action方法
/// </summary>
public string SessionMyToken { get; set; }
public string ID { get; set; }
public IPageTokenView PageTokenView { get; set; }

/// <summary>
/// Called when authorization is required.
/// </summary>
/// <param name="filterContext">The filter context.</param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
PageTokenView = new SessionPageTokenView(SessionMyToken + HttpContext.Current.Request.Params[ID]);
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}

if (!PageTokenView.TokensMatch)
{
filterContext.Result = new JsonResult
{
Data = new { Result =false, Message = "该单子已在其它地方打开,请在最新打开的页面审批或者刷新该页面!" }
};
}

}
}
}

定义生成随机码的接口和实现:

1、IPageTokenView.cs

namespace EwayFramework.Utils.Token
{
public interface IPageTokenView
{
/// <summary>
/// Generates the page token.
/// </summary>
string GeneratePageToken();

/// <summary>
/// Gets the get last page token from Form
/// </summary>
string GetLastPageToken { get; }

/// <summary>
/// Gets a value indicating whether [tokens match].
/// </summary>
/// <value>
/// <c>true</c> if [tokens match]; otherwise, <c>false</c>.
/// </value>
bool TokensMatch { get; }
}
}

2、PageTokenViewBase.cs

namespace EwayFramework.Utils.Token
{
public abstract class PageTokenViewBase : IPageTokenView
{
public static readonly string HiddenTokenName = "hiddenToken";
/// <summary>
/// Generates the page token.
/// </summary>
/// <returns></returns>
public abstract string GeneratePageToken();

/// <summary>
/// Gets the get last page token from Form
/// </summary>
public abstract string GetLastPageToken { get; }

/// <summary>
/// Gets a value indicating whether [tokens match].
/// </summary>
/// <value>
/// <c>true</c> if [tokens match]; otherwise, <c>false</c>.
/// </value>
public abstract bool TokensMatch { get; }

}
}

3、SessionPageTokenView.cs

using System;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace EwayFramework.Utils.Token
{
public class SessionPageTokenView : PageTokenViewBase
{
public string SessionMyToken { get; set; }

public SessionPageTokenView(string sessionmytoken)
{
SessionMyToken = sessionmytoken;
}

#region PageTokenViewBase

/// <summary>
/// Generates the page token.
/// </summary>
/// <returns></returns>
public override string GeneratePageToken()
{
if (HttpContext.Current.Session[SessionMyToken] != null)
{
return HttpContext.Current.Session[SessionMyToken].ToString();
}
else
{
var token = GenerateHashToken();
HttpContext.Current.Session[SessionMyToken] = token;
return token;
}
}

/// <summary>
/// Gets the get last page token from Form
/// </summary>
public override string GetLastPageToken
{
get { return HttpContext.Current.Request.Params[HiddenTokenName]; }
}

/// <summary>
/// Gets a value indicating whether [tokens match].
/// </summary>
/// <value>
/// <c>true</c> if [tokens match]; otherwise, <c>false</c>.
/// </value>
public override bool TokensMatch
{
get
{
string formToken = GetLastPageToken;
if (formToken != null)
{
if (formToken.Equals(GeneratePageToken()))
{
//Refresh token
HttpContext.Current.Session[SessionMyToken] = GenerateHashToken();
return true;
}
}
return false;
}
}

#endregion

#region Private Help Method

/// <summary>
/// Generates the hash token.
/// </summary>
/// <returns></returns>
private string GenerateHashToken()
{
return Encrypt(
HttpContext.Current.Session.SessionID + DateTime.Now.Ticks.ToString());
}

#endregion

public static string Encrypt(string plaintext)
{
string cl1 = plaintext;
string pwd = string.Empty;
MD5 md5 = MD5.Create();
byte[] s = md5.ComputeHash(Encoding.Unicode.GetBytes(cl1));
for (int i = 0; i < s.Length; i++)
{
pwd = pwd + s[i].ToString("X");
}
return pwd;
}
}
}

Htmlhelper:

using System;
using System.Web;
using System.Web.Mvc;

namespace EwayFramework.Utils.Token
{
public static class HtmlTokenHelper
{
/// <summary>
/// 自动生成隐藏控件
/// </summary>
/// <param name="htmlhelper"></param>
/// <param name="id">表单唯一标识ID</param>
/// <returns></returns>
public static MvcHtmlString GenerateVerficationToken(this HtmlHelper htmlhelper,dynamic id)
{
string formValue = SessionPageTokenView.Encrypt(HttpContext.Current.Session.SessionID + DateTime.Now.Ticks.ToString());
string sessionname = HttpContext.Current.Request.Path + htmlhelper.ViewData[id];
HttpContext.Current.Session[sessionname] = formValue;
string fieldName = PageTokenViewBase.HiddenTokenName;
TagBuilder builder = new TagBuilder("input");
builder.Attributes["type"] = "hidden";
builder.Attributes["name"] = fieldName;
builder.Attributes["value"] = formValue;
return new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
}
}
}

调用和实现:

控制器:

在对应的Action方法上加上下述:

SessionMyToken :触发该Action方法的页面路由

ID:该单子的唯一标识ID(Action方法的参数必须有对应的值)

  [CurrentApproveActionFilter(SessionMyToken = "/PPHVPM_SecondForecastBOM/SecondForecastBOMPending_P", ID = "MainId")]

页面:

参数值为:该页面的唯一标识的 ViewBag.MainId不为空

 @Html.GenerateVerficationToken("MainId")

转载于:https://www.cnblogs.com/Wtomato/p/7483754.html

http://www.lbrq.cn/news/2516473.html

相关文章:

  • 收到网站代码后怎么做重庆森林讲了什么故事
  • 重庆百度网站推广腾讯会议付费
  • 学校网站建设评比专业网站制作网站公司
  • 做网站如何挂支付系统新乡网站seo
  • 长春谁家做网站电商营销的策略与方法
  • 公司简介网站模板怎么创建个人网站
  • wordpress的pdf阅读seo是什么?
  • 在线做章网站搜外友链平台
  • 政府网站 建设依据nba交易最新消息汇总
  • 用jsp做网站登录界面模板潍坊网站关键词推广
  • 怎么找做网站的客户中国的搜索引擎有哪些
  • 上海比较好的服装外贸公司优化网站seo策略
  • 连州住房建设局网站王通seo教程
  • 厦门网站建设公司哪家好seo技术培训沈阳
  • 漳州网站建设回忆互联客服QQ友情链接推广平台
  • 老网站改版做别的上海网络营销seo
  • 网站建设公司优惠大酬宾活动合肥网站建设公司
  • 正规网站建设费用湖北网络推广有限公司
  • 百度个人网站建设seo工作流程图
  • 做铝材哪些网站招聘app拉新任务平台
  • 惠州水口网站建设网站建设规划书
  • 网站建设 长摊 无形资产2345网址导航官网下载安装
  • 任何人任意做网站销售产品违法吗产品的推广及宣传思路
  • 济南哪里有做网站的产品推广文案范文
  • 达州做网站的公司有哪些兰州网络优化seo
  • 北京网站建设的服务商百度邮箱注册入口
  • 网站版块设计百度一下打开网页
  • 自己做软件的网站长春seo优化企业网络跃升
  • 企业服务网站制作热点新闻事件
  • 成都专业建站公司新网站百度多久收录
  • 线性回归的应用
  • 基于数字信息化的全面研发项目管理︱裕太微电子股份有限公司研发项目管理部负责人唐超
  • 在线教育场景下AI应用,课程视频智能生成大纲演示
  • 多模通信·数据采集:AORO P9000U三防平板带来定制化解决方案
  • R语言中 read.table 和 read.delim 之间的区别
  • OCR 技术识别全解析:原理、主流方案与实战应用