首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET MVC / C#:如何从url中删除记录id?

在ASP.NET MVC中,如果你想要从URL中删除记录ID,通常是为了提高安全性或改善用户体验。以下是一些基础概念和相关步骤来实现这一目标:

基础概念

  1. 路由配置:ASP.NET MVC使用路由来匹配URL到控制器动作。
  2. 隐藏ID:可以通过不直接在URL中显示ID来隐藏它。
  3. 令牌替代:可以使用加密的令牌来代替ID。

相关优势

  • 安全性:减少敏感数据(如ID)在URL中的暴露,降低被恶意利用的风险。
  • 用户体验:更友好的URL结构,便于用户理解和记忆。

类型与应用场景

  • 简单重定向:适用于不需要保留原始ID信息的场景。
  • 加密令牌:适用于需要保留一定识别信息但又不希望直接暴露ID的场景。

实现步骤

方法一:简单重定向

如果你只是想简单地从URL中移除ID,可以创建一个新的路由,将请求重定向到一个不包含ID的URL。

代码语言:txt
复制
// 在RouteConfig.cs中配置新的路由
routes.MapRoute(
    name: "RemoveId",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
);

// 在控制器中处理重定向
public ActionResult RedirectToNoId()
{
    return RedirectToAction("Index", "Home");
}

方法二:使用加密令牌

你可以使用加密算法生成一个令牌来代替ID,并在服务器端解密以获取原始ID。

代码语言:txt
复制
// 使用System.Security.Cryptography命名空间中的类进行加密和解密
public static string EncryptId(int id)
{
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes("YourKey123"); // 应该使用更安全的方式来管理密钥
        aesAlg.IV = new byte[16];

        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

        using (MemoryStream msEncrypt = new MemoryStream())
        {
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(id);
                }
                return Convert.ToBase64String(msEncrypt.ToArray());
            }
        }
    }
}

public static int DecryptId(string encryptedId)
{
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes("YourKey123");
        aesAlg.IV = new byte[16];

        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

        using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(encryptedId)))
        {
            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
            {
                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                {
                    return int.Parse(srDecrypt.ReadToEnd());
                }
            }
        }
    }
}

遇到的问题及解决方法

  • 加密密钥管理:确保密钥的安全存储和管理,避免硬编码。
  • 性能考虑:加密和解密操作可能会影响性能,应进行适当的优化和测试。

通过上述方法,你可以有效地从ASP.NET MVC的URL中删除记录ID,同时保持系统的功能性和安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API

ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用。 接下来几篇文章中您会了解以下内容: ASP.NET MVC 6 中创建简单的web API。...如何从空的项目模板中启动,及添加控件到应用中。 如何配置 ASP.NET 5.0 管道。 在 IIS 外对立部署应用。 本文的目的是从空的项目开始,逐步讲解如何创建应用。...当然,您也可以从“Starter Web” 模板开始,它默认包含了MVC 6、权限、记录等其他模块,同时也内置了有效的控制器和视图在其中。...在 New Project 对话框中,点击 Templates > Visual C# > Web,选择 ASP.NET Web Application 项目模板。...有了本节如何在 MVC6 中创建 Web API的讲解,相信大家会对ASP.NE的理解又加深了一步。

2.9K60
  • ASP.NET MVC5高级编程——(1)了解MVC模式和第一个MVC程序、认识控制器

    View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。 下面,我们将开始第一个MVC程序哦!...Visual C# --> Web --> ASP.NET Web应用程序 MVC此时处于选中状态,勾选“添加单元测试”(最好选上,利于后期调试)。...中的约定: 视图访问和寻址规则 1)、在控制器中使用View()方法调用视图,返回和“动作方法同名”的视图 2)、寻址规则:View()方法默认从“View文件夹”下寻找和控制器同名的文件夹 MVC...Ctrl+F5,就是不调试的启动: 然后可以自己添加方法: 修改Details方法,使其读取和显示一个名为ID的参数,在Asp.Net MVC 5的默认路由约定中:将操作方法名称后面的URL的这个片段作为一个参数...,该参数的名称为ID,如果操作方法中有名为ID的参数,那么Asp.Net MVC 会自动将这个URL片段作为参数传进来,就是ID的值!

    1.9K20

    ASP.NET Core MVC 概述

    控制器从模型创建并填充 ViewModel 实例。 备注 可通过多种方法在使用 MVC 体系结构模式的应用中组织模型。 详细了解某些不同种类的模型类型。...在 MVC 应用程序中,视图仅显示信息;控制器处理并响应用户输入和交互。 在 MVC 模式中,控制器是初始入口点,负责选择要使用的模型类型和要呈现的视图(因此得名 - 它控制应用如何响应给定请求)。...Core MVC 建立在 ASP.NET Core 的路由之上,是一个功能强大的 URL 映射组件,可用于生成具有易于理解和可搜索 URL 的应用程序。...IActionResult GetProduct(int id) { ... } } 模型绑定 ASP.NET Core MVC 模型绑定将客户端请求数据(窗体值、路由数据、查询字符串参数...详细了解如何测试控制器逻辑。 Razor 视图引擎 ASP.NET Core MVC 视图使用 Razor 视图引擎呈现视图。

    6.4K20

    ASP.NET MVC 5 - 控制器

    本系列教程,我们将覆盖所有这些概念,并告诉您如何在ASP.NET MVC 5中使用它们来构建应用程序。 首先,让我们创建一个控制器类。...ASP.NET MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数。 ?...让我们来看看下面我们如何能做到这一点吧。 控制器是MVC中的重要组成部分,有了本节知识的学习,相信大家会更加深入地理解MVC。那么在MVC开发过程中,除了以上知识之外,还可以借助哪些工具呢?...ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6. ...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.

    2.6K80

    Asp.Net MVC4入门指南(2):添加一个控制器

    让我们从浏览器中调用它。运行应用程序(按F5或CTRL + F5)。在浏览器的地址栏中输入路径“HelloWorld“。...根据传入的URL,ASP.NET MVC调用不同的控制器类(和它们之中不同的操作方法)。...ASP.NET MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数。 ?...让我们来看看下面我们如何能做到这一点吧。 控制器是MVC中的重要组成部分,有了本节知识的学习,相信大家会更加深入地理解MVC。那么在MVC开发过程中,除了以上知识之外,还可以借助哪些工具呢?...查询详细信息和删除记录 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

    1K70

    Asp.Net MVC4入门指南(9):查询详细信息和删除记录

    在本教程中,您将查看自动生成的Details和Delete方法。 查询详细信息和删除记录 打开Movie控制器并查看Details方法。...然而,这就带来了一个小问题: ASP.NET 将部分的 URL按名称映射到操作方法,如果您重命名了方法,通常Routing将无法找到该方法。...MVC 应用程序并在本地的 DB 数据库中存储数据。...以上的查询详细信息和删除记录示例是为了帮助大家更好的掌握MVC的知识,在进行MVC开发时,使用开发工具也可以大大提高工作效率。...查询详细信息和删除记录 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

    2K80

    国内 Mono 相关文章汇总

    mono2.8.2和jexus4.1运行.net3.5下的MVC2.0过程记录 OS X 上使用.NET开发应用程序 C#开发Android应用的必备——Mono for Android V1.0 发布...Bundle制作安装包让C#桌面应用程序脱离net framework 把成熟的代码从.NET移植到Mono Mono喜迁新家-http://www.xamarin.com/ Asp.Net Mvc3...中配置Jexus+Mono3.2运行Asp.Net Mvc 4站点 (一) Hello Jexus 记从安装centos系统在到使用mono3.2部署MVC过程遇到的问题 mono3.2和monodevelop4.0...Linux下部署ASP.NET服务连接oracle遇到的问题记录 Mono 3.2.7发布,JIT和GC进一步改进 如何让我们的PHP在Jexus中跑起来 Xamarin和微软发起.NET基金会 mono...项目的组成说明 Harries-高性能分布式Asp.net通信框架 CentOS7 + mono +Jexus 环境的搭建 VS2013中的MVC5模板部署到mono上的艰辛历程 如何利用mono把.net

    11.4K60

    如何在 ASP.NET MVC 中集成 AngularJS(1)

    另外,在 ASP.NET MVC 模式下,一些业务逻辑是可以被最终写入在 MVC 的控制器中。在MVC控制器中,写入代码来控制表示层中的信息,这是很有诱惑力的。...如果你删除一个包, NuGet 会让所有删除过程不会留下任何痕迹。 优美的URLS 对于此示例应用程序,我想在浏览器的地址栏中实现优美的网址。...基本 URL 用于在整个应用程序中,解决所有相对 URL 的问题。你可以在应用程序中设置,如下所示的母版页的 header 部分的基本 URL: 从 Views 文件夹到浏览器,ASP.NET MVC 必须被配置为允许 HTML 文件和 JavaScript...主页索引的 Razor 视图和 MVC 路由 ASP.NET MVC 中集成 AngularJS 的一件有趣的事情,就是应用程序实际上是如何启动和实现路由的。

    7.6K60

    ASP.NET Core 1.1 简介

    响应缓存中间件会作为ASP.NET MVC中OutputCacheAttribute的继任者。...URL重写中间件 通过可以使用IIS标准XML格式化规则,Apache Mod_Rewrite语法或一些编码到您的应用程序中的一些简单的C#方法配置的中间件组件将URL重写功能带到ASP.NET Core...这样的话,就允许我们在应用启动的时候从Key Vault secrets中获取配置,并将其放在内存之中,从而能够使用正常的ASP.NET Core配置抽象来访问配置数据。...如果更改这些设置,例如,从文件系统切换到blob存储日志,您的应用程序将自动切换到记录到新位置,而不重新部署。...这允许您从应用程序启动时从密钥保险库秘密检索配置并将其保存在内存中,使用普通的ASP.NET Core配置抽象来访问配置数据。

    2.4K60

    C#基础知识复习

    由于重定向是发生在浏览器端,因此浏览器的地址栏会变成重定向后的URL。浏览器端重定向可以跨站点。 ASP.NET 中页面之间传递值的几种方式?...MVC请求的处理过程?  请求到达服务器后,首先进入路由系统进行验证,如果请求的Url地址格式符合路由的定义,则将请求交给控制器中的方法进行处理。...SQL Server 写出一条Sql语句: 取出表A中第31条到第40条记录(SQL Server, 以自动增长的ID作为主键, 注意:ID可能不是连续的)。...SQL Server中,有一张学生成绩表,有三个字段:学生ID,学生姓名,考试成绩。如何查询出成绩排在前三名的学生?...@@identity SQL Server中,游标有什么作用?如何知道游标已经到了最后?  作用:从包括多条数据记录的结果集中每次提取一条记录。

    6.1K10

    【21】ASP.NET CoreMVC 中的控制器

    ASP.NET CoreMVC 中的控制器 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自《从零开始学 ASP.NET Core...是什么以及它在 ASP.NET Core MVC 中的作用。...我们会通过他来演示,如何抓包获取请求。 控制器 ? MVC 中的控制器是一个类,它继承自Microsoft.AspNetCore.Mvc.Controller 控制器类名称后缀为Controller。...假设用户在浏览器地址栏中键入了以下 URL 并按 ENTER 键http://localhost:12345/home/details URL"/home/details”会映射到 HomeController...此映射是由我们应用程序中的路由规则定义完成。 我们将在即将发布的视频中详细讨论 ASP.NET Core MVC 中的路由。 请求到达控制器动作方法。

    1.7K30

    从 MVC 到使用 ASP.NET Core 6.0 的Minimal API

    后来,在 ASP.NET Core 中,用于构建网站和 API 的单一框架,这些框架被统一到了 ASP.NET Core MVC 中。...在这些示例中,我使用的是 .NET 6.0 预览 7,为了提供公平和最新的并排比较,我还使用了最新的webapi模板,因为 MVC 还受益于 C# 10 的一些新特性,使事情变得更加“最小化”。...Startup MVC dotnet new webapi 新的 ASP.NET 模板取消了Startup类并利用了 C# 10 的顶级语句功能,因此我们有一个Program.cs包含所有引导代码的文件...("get_product", new { id = product.Id })); } 请注意路由的路由参数(get_product在本例中为 ID)是如何作为匿名对象传递的。...过滤器管道如何从您的应用程序中删除重复的一个很好的例子。

    7.6K10

    Asp.Net MVC4入门指南(1): 入门介绍

    该应用程序还允许您添加、编辑和删除电影,以及显示单个记录的详细信息。所有的用户数据输入场景都包含了数据验证逻辑,以确保存储在数据库中的数据都是正确的。 ?...创建您的第一个应用程序 您可以使用 Visual Basic 或 C# 作为编程语言来创建您的应用程序。请在左侧选择 Visual C#,然后选择ASP.NET MVC 4 Web 应用程序。...在新的 ASP.NET MVC 4 项目对话框中,选择互联网应用程序。使用Razor作为默认视图引擎。 ? 单击确定。...从调试菜单中,选择启动调试. ? 请注意您也可以使用键盘的快捷键F5来启动调试。 F5使Visual Studio启动IIS Express并运行Web应用程序。...查询详细信息和删除记录 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

    2.1K60
    领券