问题标签 [iidentity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 什么是 Thread.CurrentPrincipal,它有什么作用?
是Thread.CurrentPrincipal
用来做什么的?它对应用程序的身份验证和授权有何帮助?是否有任何文章或资源可以帮助解释它的作用?
.net - 从 ClaimsPrincipal.Current 检索时,Thread.CurrentPrincipal 被重置/ClaimsPrincipal 丢失
我有一个运行 .Net 4.5.2 的 WinForms 应用程序。
登录时,我创建了一个带有一堆声明的 ClaimsPrincipal。我保存到 Thread.CurrentPrincipal。在同一个登录过程中,ClaimsPrincipal 工作正常。
应用程序初始化后,当用户单击控件时,我尝试从 ClaimsPrincipal.Current 中检索 ClaimsPrincipal。当我这样做时,它是一个 GenericPrincipal 并且它失去了它的所有声明。
我究竟做错了什么?
asp.net-core - 在 .Net Core 中使用 Claims Identity
在我们当前的系统(.net 4.5)中,为了在整个应用程序中处理用户身份验证,我们创建了自己的对象IIdentity
和IPrincipal
对象。因此,在每个请求中,我们解密 cookie 中的一个属性(存储在登录时),并使用它检查缓存中的用户对象(它也为我们提供了客户端对象)。如果用户在缓存中,那么我们将HttpContextBase.User
和设置Thread.CurrentPrincipal
为我们自己的IPrincipal
. 如果用户不在缓存中,那么我们从数据库中获取它们并设置上面的内容。
这非常有效,因为我们有BaseController
2 个属性,一个用于当前用户,一个用于当前客户端。这些可以通过转换User.Identity
为我们自己的IIdentity
.
我们现在希望将我们的应用程序移至 .netcore,但鉴于我们似乎无法复制它,我们不确定如何实现与上述相同的效果。我们目前正在使用带有 ASP 身份的 cookie 中间件(此处显示),我们正在设置一些声明(id、名称等),但我们不确定如何或在哪里检查缓存并在每个请求上设置一些属性。
asp.net - User.Identity.GetUserId() 在控制器操作中总是返回 null
我需要在控制器中使用当前登录的用户 ID。它总是返回 null。我已经登录了。这是我的代码。
我尝试添加参考
我还尝试添加声明
当我尝试检索声明时,它也会给出 null 。
任何帮助,将不胜感激。
评论中要求的附加信息:
这是aspnetuser提供的正常登录。
此处添加了声明。
asp.net-mvc - Iidentity IPrincipal 中的购物车
我正在为我的客户开发一个订单管理系统。在这个系统中,我决定使用 IPrincipal 而不是 IIdentity。
我一直在考虑应该在哪里存储客户的购物车数据。最后我决定存储在 Cookie 中。
我的第一个问题是:我应该在哪里存储客户购物车数据?在数据库中还是在 cookie 中?
我认为在 cookie 中会更快、更有用。我需要你对这个问题的想法。
我试图用 cookie 存储。我可以将购物车数据添加到 cookie,但是当我尝试将另一个产品添加到购物车时,购物车数据正在重置。我想将购物车数据存储在列表中。
我的代码:
1-我的CustomPrincipal:
2- CustomPrincipalSerializeModel - 用于将自定义信息序列化到 FormsAuthenticationTicket 对象中的 userdata 字段中。
3- 我的登录方法 - 使用自定义信息设置 cookie:
4- Global.asax.cs 读取 cookie 并替换 HttpContext.User 对象,这是通过覆盖 PostAuthenticateRequest 来完成的
5-我的购物车虚拟机
6-加入购物车方法
serialization - 无法反序列化 ClaimsPrincipal
鉴于我创建了一个声明身份,然后创建了一个主体。然后我序列化主体。检查 json 字符串,我可以确认“角色”声明以及身份都存在。
反序列化它会导致一个具有空属性的对象。和.Claims
丢失.Identity
。
问题:如何确保对象被正确反序列化?