asp.net mvc中使用路由进行URL加密

代码实例如下:

namespace Test
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  //原有代码 
            routes.Add(new Route("testroute-{para1}.cshtml", new AjaxGetRouteHandler()));      //配置当前路由规则下的 IRouteHandler处理类
            routes.MapRoute(name: "testroute", url: "testroute-{para1}.cshtml");  //自己配置的全新路由规则,当然此处尚未进行默认值配置。
            routes.MapRoute(        //MVC原有的默认路由配置规则  注意:这里必须将默认的路由规则在所有路由注册的最后一个进行注册,否则会出现新规则不能解析到正确地址的问题
              name: "Default",
              url: "{controller}/{action}/{id}",
              defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
          );
        }

        public class AjaxGetRouteHandler : IRouteHandler
        {
            public IHttpHandler GetHttpHandler(RequestContext requestContext)
            {
//在当前类中可以对用于处理请求的controller,action等个各个参数进行赋值操作,可以在公开的地址栏对URL进行DES加密,这里进行解密从而得到真正的请求地址。 requestContext.RouteData.Values[
"controller"] = "home"; requestContext.RouteData.Values["action"] = "index";//requestContext.RouteData.Values["para1"].ToString().ToLower(); return new MvcHandler(requestContext); } } } }

 

posted @ 2015-02-06 14:48  曹赫洋  阅读(3041)  评论(0编辑  收藏  举报