gpt4 book ai didi

c# - 使用 Owin 和 Windows 身份验证在 MVC 5 应用程序中添加声明

转载 作者:太空狗 更新时间:2023-10-29 23:14:33 24 4
gpt4 key购买 nike

我正在开发一个 mvc 5 网络应用程序,其身份验证由 owin 和表单例份验证实现。

它提供开箱即用的声明,效果很好。现在我正在尝试使用 Windows 身份验证来登录系统

public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
// app.CreatePerOwinContext(ApplicationDbContext.Create);
// app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);

// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");

//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");

//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");

//// app.UseGoogleAuthentication(
// clientId: "000-000.apps.googleusercontent.com",
// clientSecret: "00000000000");
}

我已经评论了所有的供应商。

我试图在登录过程中推送声明,但用户 (window.identity.principal) 已经通过身份验证,我可以通过 authenticationmanger.current.user.Isauthenticated 检查

我正在尝试登录,但没有推送声明,但我可以看到用户声明中存在的声明列表,即使没有触发签名命令。就像 Windows 身份验证中的 owin 已经知道谁是当前用户及其名称并声明。但是我希望将一些自定义的一次性声明推送到我无法实现的现有列表中。

现有的所有声明都是系统声明类型,这让我怀疑我是否可以修改声明。

我如何修改、更新或扩展现有的声明列表?

我尝试了声明的撤销方法,它适用于表单例份验证。

最佳答案

   private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

// Add more custom claims here if you want.
var claims = new Collection<Claim>
{
new Claim("Surname",user.ApplicantName),
new Claim("ApplicantId",user.ApplicantId),
new Claim("AccessCodeId",user.AccessCodeId),
new Claim ( "Registered", "YES")
};

identity.AddClaims(claims);

var principal = new ClaimsPrincipal(identity);

// turn into Principal
HttpContext.User = principal;

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}

关于c# - 使用 Owin 和 Windows 身份验证在 MVC 5 应用程序中添加声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25163282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com