当前位置: 首页 > 编程语言 > C#

如何在MVC5中设置自定义ClaimsPrincipal?Share

时间:2023-04-11 02:33:49 C#

如何在MVC5中设置自定义ClaimsPrincipal?我创建了一个自定义主体类publicclassFacebookPrincipal:ClaimsPrincipal{publicJObjectData{get;放;我想使用它。当用户登录时,我尝试设置varfbP=newFacebookPrincipal{Data=user.Data};Thread.CurrentPrincipal=fbP;AuthenticationManager.User=fbP;HttpContext.User=fbP;设置后它工作正常,但是当我回家/索引时,该值丢失了varuser=HttpContext.GetOwinContext().Authentication.User;varbbbb=this.User;varcccc=ClaimsPrincipal.Current;以上所有方法都返回一个ClaimsPrincipal类型的Principal,ConvertingtoFacebookPrincipal返回null。如何设置自定义委托人?在将ClaimsIdentity分配给User和Thread之前,ASP.NETIdentity是使用默认的ClaimsIdentityFactory创建的。您应该创建自己的ClaimsIdentityFactory,您可以在其中添加或管理其他信息。UserManageruserManager=newUserManager(newUserStore());userManager.ClaimsIdentityFactory=newMyClaimsIdentityFactory();以下代码为ClaimsIdentity或其子类创建一个实现。publicclassMyClaimsIdentityFactory:ClaimsIdentityFactorywhereIUser:IdentityUser{publicMyClaimsIdentityFactory():base(){}publicoverrideSystem.Threading.Tasks.TaskCreateAsync(UserManagermanager,IUseruser,stringauthenticationType){//覆盖创建身份。}}?确保您绝对需要继承ClaimsIdentity。您可以添加附加信息作为声明。您应该注意添加额外的补充信息声明,因为副作用可能会改变授权策略决策的制定方式。今天再次阅读这个问题,我意识到问题出在身份持久性上,而不是如何创建自定义ClaimsIdentity!!!此外,要在两个请求之间保持身份,请使用以下代码。以上是C#学习教程:HowtosetacustomClaimsPrincipalinMVC5?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——//你可以在这里创建自己的Identity。varidentity=awaitUserManager.CreateIdentityAsync(user,DefaultAuthenticationTypes.ApplicationCookie);//或添加自定义声明。存储在IUserClaimStore中的声明已由上述创建填充。identity.AddClaim(newClaim("ProfileDATA","VALUE"));AuthenticationManager.SignIn(newAuthenticationProperties(){IsPersistent=isPersistent},身份);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: