维护用户 ID 的最佳实践 (MVC)

2024-06-24

我使用 FormsAuthentication,但添加了自定义 MemberShipProvider 来根据自定义用户表进行验证。

所有包含“用户数据”的表都有一个 idUser 列,因此我需要维护用户 id 以便向用户显示他的数据。

以前我使用过会话变量(ASP.NET Webform),但当我将 Web 应用程序重写为 MVC 时,我想问一下通常认为最好的方法是什么。

会话变量仍然是保存 idUser 的最佳位置吗?或者我应该添加一个自定义的“Current.User.Identity”,它除了用户名之外还保存一个公共 userId ?

或者我应该选择一种完全不同的方法?


当我为 MVC 实现自定义成员资格提供程序时,我也遇到了同样的问题。我最终做了两件事。我将用户的 ID 存储在ProviderUserKey的领域MembershipUser目的。看提供者用户密钥 http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser.provideruserkey.aspx。然后回答你的问题,是的,我从 System.Web.Security.IPrincipal 创建了一个自定义主体,尽管我后来继承了System.Web.Security.RolePrincipal相反,因为我想要对角色的支持。

public class MyPrincipal : RolePrincipal
{
    public Guid Id { get; set; }

    public MyPrincipal(string providerName, IIdentity identity, Guid id) : base(identity)
    {
        Id = id;
    }
}

Update:我不想在我的例子中使用会话的原因是因为我已经为应用程序禁用了它。我读过,MVC 背后的核心概念是关注点分离,它紧密模拟了无状态的 Web 工作方式。虽然我现在不记得在哪里读到过,但现在我试着记住。不过,我确实记得还读过,如果你可以取消会议,你就应该这样做。它将允许 IIS 提供来自您的应用程序的同时请求,而不必等待一个请求完成(并释放用户的会话),然后下一个请求才能使用该会话并发送其响应。其中最大的影响是使用 Ajax 加载页面内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

维护用户 ID 的最佳实践 (MVC) 的相关文章

  • 维护用户 ID 的最佳实践 (MVC)

    我使用 FormsAuthentication 但添加了自定义 MemberShipProvider 来根据自定义用户表进行验证 所有包含 用户数据 的表都有一个 idUser 列 因此我需要维护用户 id 以便向用户显示他的数据 以前我使
  • 是否应该在使用 MVC 的每个视图中使用 ViewModel?

    我了解您使用 ViewModel 来存储来自其他模型和源的不同数据以在视图中使用 因为模型并不总是包含您想要的内容 我试图弄清楚为每个视图使用 ViewModel 是否合适 我问的原因是出于一致性原因 您可以有一个仅需要模型本身的视图 以及
  • MVC 5:模型中的字典绑定到视图中的一系列复选框?

    当我将模型发布到控制器以保存它时 控制器会得到一个空字典 哪里出了问题 绑定工作有什么特别要做的吗 我的模型有这个属性 public Dictionary
  • 返回 JSON 或部分 html 的 ASP.NET MVC 控制器操作

    我正在尝试创建控制器操作 该操作将根据参数返回 JSON 或部分 html 将结果异步返回到 MVC 页面的最佳方法是什么 在您的操作方法中 返回 Json object 以将 JSON 返回到您的页面 public ActionResul
  • SignalR - 如何向除呼叫者之外的所有人发送消息

    我有一个 Aspnet core 3 1 MVC 应用程序 我在其中配置了 SignalR 集线器 我有一个控制器 我可以在其中进行依赖注入 oIHubContext private readonly IHubContext
  • 在 SelectList 集合中设置所选项目

    我有一堂具有以下属性的课程 它构建了一个SelectList现有列表中的对象 然后设置所选项目 public SelectList ProviderTypeList get SelectList list new SelectList my
  • 无法将代码优先迁移应用到 mysql 数据库

    我正在使用 EF 代码优先模型开发 asp net mvc 我正在尝试首先使用 EF 代码将迁移应用到我的项目中 我正在使用 MySql 数据库 目前我使用的是 EF 4 3 1 版本和 6 6 4 0 版本的 mysql Connecto
  • IHttpModule 和控制台应用程序的流畅 NHibernate 模式

    我目前有一个在存储库模式中使用 Fluent NHibernate LINQ 的 C MVC 2 Web 应用程序 并使用 Ninject 来处理 MVC 控制器的构造函数要求 将其传递到存储库中 我的 Fluent NHibernate
  • Html.BeginForm() 扩展类型

    有谁知道创建自定义 HtmlHelperextension 方法的语法 其行为类似于 p Loads of html stuff here p 我正在思考一些类似的事情 有任何想法吗 Cheers ETF 传真 您需要创建一个实现的类IDi
  • 为什么我应该使用 @Url.Content("~/blah-blah-blah")?

    我无法理解我可以从中获得的好处Url Content https msdn microsoft com en us library system web mvc urlhelper content aspxASP NET MVC 中的方法
  • global.asax Application_AcquireRequestState 与 Application_BeginRequest

    有什么不同 我想在我的应用程序中实现语言下拉选择 因此 当选择选定的语言时 将设置线程区域性并重新加载页面 Like so Thread CurrentThread CurrentCulture CultureInfo CreateSpec
  • 如何在 ASP.Net MVC 或等效控件中构建复合控件或模板控件?

    在我们当前的 ASP Net Webforms 应用程序中 我们有几个复合 模板服务器控件 它们的存在只是为了具有共同的外观和感觉 例如 我们有一个面板控件 它有一个标题 一个与面板内容相关的按钮位置 当然还有内容 在 MVC 中如何最好地
  • 识别 ASP.NET MVC 代码中的 Angular js AJAX 调用

    我正在使用 ASP NET MVC 和 AngularJS 开发一个示例应用程序 在服务器端代码中 我编写了一个Action过滤器属性 其中我需要检查请求是普通请求 浏览器 还是AJAX请求 public override void OnA
  • 将复杂类型数组添加到 RouteValueDictionary

    我想知道是否有一种优雅的方法将复杂类型数组添加到 RouteValueDictionary 或兼容类型 例如 如果我有一个类和一个操作 public class TestObject public string Name get set p
  • ReCAPTCHA v2 无法在 IE 兼容性视图中工作

    我正在尝试让 recapatcha v2 在我的 ASP MVC 项目中工作 客户端的计算机具有 IE10 IE11 并在兼容性视图中显示所有 Intranet 页面 这导致验证码未按预期显示 问题是它很少接受我的答案 即使它是正确的 它只
  • 删除高图表上的导出和打印按钮插件

    我正在使用 MVC 目前正在使用 highchart 我正在使用 Exporting js 以便用户可以打印或导出 highchart 图表 我的视图中有两个图表 我想禁用其中一个图表的打印和导出 我怎样才能做到这一点 Exporting
  • HiddenInput(DisplayValue = false)] 与 [ScaffoldColumn(false)]

    究竟是什么ScaffoldColumn false and HiddenInput DisplayValue false 这两者之间的主要区别是什么 用哪一款最好 谢谢 ScaffoldColumn false 告诉 Visual Stud
  • 如何将 JavaScript 添加到 ASP.NET MVC 视图?

    我有一个简单的视图 我想添加一个JQuery 日期选择器 JavaScript http jqueryui com demos datepicker 到这个观点 而不是every查看 通过母版页 我不确定执行此操作的最佳方法是什么 其次 我
  • Web API 请求上的滑动会话

    UPDATE 看起来它正在尝试写入新的 cookie 标头ApplyResponseGrantAsync但不能因为它是抛出标头已发送的异常 UPDATE 更清楚 我如何获得Set Cookie在 Web API 请求期间添加到 XHR 响应
  • ASP.NET MVC3 Ajax.ActionLink - 条件确认对话框

    我有一个 Ajax ActionLink 仅当满足某些条件 用户有未保存的更改 时 我才希望显示一个确认对话框 我创建了一个 JavaScript 函数 它根据需要显示确认对话框 并根据响应返回 true 或 false 我将其绑定到 Ac

随机推荐

  • 如何将产品添加到现有且已付款的 Woocommerce 订单中?

    我有一个 WooCommerce 网站 我的一位客户在该网站上购买了产品和电缆 该客户购买了一根与其他产品不兼容的电缆 并询问我们是否可以向他运送价格相同的兼容电缆 也许这是一个愚蠢的问题 但我如何编辑已付款的订单 删除不兼容的电缆并添加正
  • 将 NSDate 转换为 NSString

    我如何转换 NSDate to NSString所以只有这一年 yyyy 格式是输出到字符串吗 怎么样 NSDateFormatter formatter NSDateFormatter alloc init formatter setDa
  • 如何在 Swift 中使用 AXObserverAddNotification?

    如何在 Swift 中使用 AXObserverAddNotification 来检测 UI 更改 Obj C 中有一个很好的答案 我的应用程序如何检测另一个应用程序窗口的更改 https stackoverflow com questio
  • 如何使用 Route53 从一个顶级域重定向到另一个顶级域

    如果我的术语在这里不太正确 请道歉 我的域 albunack net 在 Route53 上运行良好 我还在 Route 53 控制下拥有域 albunack com 我希望对 albunack com 的任何请求都重定向到 albunac
  • 引用初始化和直接绑定与间接绑定

    考虑以下情况 struct A operator int int x A 规范说在http eel is c draft dcl init ref 5 http eel is c draft dcl init ref 5关于引用绑定是直接还
  • 版本控制 rpm 规范文件

    我正在配置一台构建机器来为大量非常相似的项目生成 rpm 每个项目的规范文件在名称上以及有时在依赖项和其他属性上都略有不同 每个项目都有自己的 git 存储库 其中包含项目文件 这些规范文件仅存在并且实际上仅对构建系统本身有用 每个项目都可
  • 调试目标调用异常

    我正在使用 Visual Studio 2008 C Express Edition 并且正在尝试调试由于我触发的事件而发生的 TargetInitationException 我的问题并不是专门针对此异常 因此我没有包含有关此异常的任何详
  • 当只有一个对象时将XML转换为Json数组Java

    我有一个 XML 我需要将其转换为 JSON 当在 XML 中我们有多个元素时 它会创建正确的 jsonArray 但是当单个元素未创建数组时 任何人都可以帮助我如何在单个元素的情况下获取数组 String TEST XML STRING
  • 取消选中复选框后,输入类型文本字段会重复

    我有名为名字 姓氏和电子邮件的复选框 我必须在单击复选框后显示输入类型 或者如果未选中 则删除该复选框 另外 我试图获取选中的复选框的标签 但我没有得到它 你愿意帮我吗 document ready function add text ty
  • 为什么人们在代码中使用魔法值而不是 null ?

    我在遗留代码和一些 NET 开源项目中看到了这一点 我无法想象这样做的理由 对我来说 仅使用 null 似乎更容易 Example public class Category int parentID bool HasParent get
  • 一个Api可以设置两个认证吗?身份服务器4

    我构建了一个身份服务器 并为客户端提供了两个 grant types 混合和密码 现在 他们每个人都可以独立获取访问令牌 如果同时添加它们 只是混合工作 密码模式可以获取访问令牌 但访问 api 时需要使用不记名令牌 我被重定向到混合登录页
  • 从命令行构建 ASP.NET 解决方案?

    如何从命令行构建 ASP NET Web 应用程序 在 bat 文件中尝试此操作 将 v4 0 30319 替换为适当的版本 CD C Windows Microsoft NET Framework v4 0 30319 msbuild C
  • 如何强制 Theano 在 GPU 上并行化操作(测试用例:numpy.bincount)

    我正在寻找使用 GPU 加速 bincount 计算的可能性 参考numpy中的代码 x new numpy random randint 0 1000 1000000 timeit numpy bincount x new 100 loo
  • Appium WinAppDriver 和 Selenium 4

    我正在努力使用 get WinAppDriver 打开应用程序 我的 Maven 导入如下
  • 包含所有这些第 3 方 JavaScript 文件是否会带来安全风险?

    当您将所有这些不同的 javascript 文件包含在用于各种服务 例如网站分析 点击跟踪等 的页面上时 这是否会造成巨大的安全风险 因为使用 javascript 他们可以劫持表单上输入的个人信用卡 目前这怎么被认为是安全的 意思是 你的
  • Google 地图上的饼图

    我想在 Google 地图中的几个位置绘制饼图 有没有办法在谷歌地图的特定位置绘制谷歌饼图来表示数据集 例如特定位置 城镇的人口 我想出了一个解决方案 下面显示了我编写的用于在特定位置显示饼图图标的代码 我还有一些其他要求 将事件侦听器添加
  • 如何使用 OGRE 创建 .mesh 文件?

    我对OGRE图形引擎比较陌生 所以我的问题可能看起来太明显了 但搜索相关信息并不成功 Given 我有一个 OGRE 应用程序 其中有一个由一些网格 灯光 相机和纹理创建的场景 我认为这很简单 所有这些都由场景节点树 内部对象 表示 目标
  • Sidekiq 不处理队列

    有哪些可能的原因可以Sidekiq https github com mperham sidekiq阻止处理队列中的作业 队列已满 日志文件sidekiq log表示根本没有活动 因此队列已满但日志为空 并且 Sidekiq 似乎没有处理项
  • 使用 Inno Setup 将序列号写入文件

    我正在尝试让以下 Inno Setup 代码正常工作 Setup UserInfoPage yes Code function CheckSerial Serial String Boolean begin Result true Save
  • 维护用户 ID 的最佳实践 (MVC)

    我使用 FormsAuthentication 但添加了自定义 MemberShipProvider 来根据自定义用户表进行验证 所有包含 用户数据 的表都有一个 idUser 列 因此我需要维护用户 id 以便向用户显示他的数据 以前我使