小编ale*_*ush的帖子

如何在使用asp.net标识更改当前用户的UserName后更改身份验证cookie

将asp.net身份版本1.0.0-rc1与Entity Framework 6.0.0-rc1(Visual Studio 2013 RC附带的那些)一起使用.

试图让用户有机会改变他们的UserName.似乎没有功能AuthenticationIdentityManager,所以我使用EF更改数据(获取当前用户的User对象,更改UserName并保存更改).

问题是认证cookie保持不变,下一个请求失败,因为没有这样的用户.

在过去的表单身份验证中,我使用以下代码来解决此问题.

var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
Run Code Online (Sandbox Code Playgroud)

我该怎么做asp.net身份更新cookie?

UPDATE

以下代码似乎更新了身份验证cookie.

var identity = new ClaimsIdentity(User.Identity);
identity.RemoveClaim(identity.FindFirst(identity.NameClaimType));
identity.AddClaim(new Claim(identity.NameClaimType, newUserName));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant
    (new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});
Run Code Online (Sandbox Code Playgroud)

剩下的问题是:如何IsPersistent从当前身份验证cookie中提取值?

owin asp.net-mvc-5 asp.net-identity

18
推荐指数
1
解决办法
1万
查看次数

推荐用于为owin身份验证实现自定义身份验证提供程序

我需要通过LinkedIn,Vkontakte和其他没有提供商的社交网络对用户进行身份验证.

我成功地通过以下方式创建自定义身份验证提供程序:

  1. Katana源代码中获取Facebook提供商的代码.
  2. 将所有"Facebook"更改为"Vkontakte"(只需找到并替换).
  3. 自定义[provider_name]AuthenticatedContext类,[provider_name]AuthenticationHandler.ApplyResponseChallengeAsync()[provider_name]AuthenticationHandler.AuthenticateCoreAsync().

一切都运作良好,但只是想知道.许多代码都是重复的,没有实际的变化.有没有办法使用任何标准的东西来构建自定义提供程序,而不仅仅是复制文件?

authentication owin katana

7
推荐指数
1
解决办法
3083
查看次数

在asp.net Identity中自定义IdentityUser类时会创建可为空的字段

我试图在asp.net身份中自定义IdentityUser类.

public class ApplicationUser : IdentityUser
{
    public ApplicationUser()
    {
        IsBlocked = false;
    }

    public bool IsBlocked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是:使用代码优先迁移时,附加字段创建为可空.如果我删除数据库并重新创建它也是一样的.

CREATE TABLE [dbo].[AspNetUsers] (
    [Id]            NVARCHAR (128) NOT NULL,
    [UserName]      NVARCHAR (MAX) NULL,
    [PasswordHash]  NVARCHAR (MAX) NULL,
    [SecurityStamp] NVARCHAR (MAX) NULL,
    [IsConfirmed]   BIT            NOT NULL,
    [IsBlocked]     BIT            NULL,
    [Discriminator] NVARCHAR (128) NOT NULL,
    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

我在同一个DbContext上的其他类中有布尔字段,并且它们都是非空的(因为它们应该).

entity-framework ef-code-first entity-framework-6 asp.net-identity

3
推荐指数
1
解决办法
1865
查看次数

更改.Net数组边界

我将数据从一个第三方库传递到另一个第三方库.

给定object[,]下限{0,0},我需要object[,]使用下限{1,1}.

有没有办法在不创建新数组和复制所有数据的情况下执行此转换?

.net c# arrays

2
推荐指数
1
解决办法
106
查看次数