Asp.Net Core 3.0授权与认证
Asp.Net Core 3.0 Authorization and Authentication
无论我在互联网上的哪个地方查看,身份都用于与 net.core 相关的登录过程。没有人谈论使用我们的普通用户名和密码登录。我们正在登录,但这次是在检查
我们不能使用 [Authorize(Roles="Admin")] 或 [Authorize] 属性。要使用它,我们需要按如下方式登录。
signInManager.PasswordSignInAsync (model.email, model.password, 真, 真);
看看这个link但是结果是一样的
https://docs.microsoft.com/tr-tr/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1#ord 是
如果是这里的结果,我们正在努力。我需要做什么才能在不使用策略的情况下将上述属性用于我自己的登录,signInManager.PasswordSignInAsync 所做的正是我添加到消息中的内容,如下所示,但它并没有发生。
我的登录码
https://rextester.com/YBJ16358
我的创业公司
我解决了如下问题。如果用户名和密码为真
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserName));
identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
identity.AddClaim(new Claim(ClaimTypes.GivenName, user.Name));
identity.AddClaim(new Claim(ClaimTypes.Surname, user.Surname));
identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
foreach (var role in _userManager.GetRolesAsync(user).Result)
{
identity.AddClaim(new Claim(ClaimTypes.Role, role));
}
ClaimsPrincipal principal = new ClaimsPrincipal(identity);
AuthenticationProperties _authentication = new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow
};
await _HttpContextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true });
我的创业公司
services.AddAuthentication(options =>
{
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(config =>
{
config.Cookie.Name = "login";
config.LoginPath = "/Account/Login";
config.ExpireTimeSpan = TimeSpan.FromMinutes(5);
});
和应用程序
app.UseAuthentication();
app.UseAuthorization();
无论我在互联网上的哪个地方查看,身份都用于与 net.core 相关的登录过程。没有人谈论使用我们的普通用户名和密码登录。我们正在登录,但这次是在检查 我们不能使用 [Authorize(Roles="Admin")] 或 [Authorize] 属性。要使用它,我们需要按如下方式登录。
signInManager.PasswordSignInAsync (model.email, model.password, 真, 真);
看看这个link但是结果是一样的 https://docs.microsoft.com/tr-tr/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1#ord 是
如果是这里的结果,我们正在努力。我需要做什么才能在不使用策略的情况下将上述属性用于我自己的登录,signInManager.PasswordSignInAsync 所做的正是我添加到消息中的内容,如下所示,但它并没有发生。
我的登录码 https://rextester.com/YBJ16358
我的创业公司
我解决了如下问题。如果用户名和密码为真
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserName));
identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
identity.AddClaim(new Claim(ClaimTypes.GivenName, user.Name));
identity.AddClaim(new Claim(ClaimTypes.Surname, user.Surname));
identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
foreach (var role in _userManager.GetRolesAsync(user).Result)
{
identity.AddClaim(new Claim(ClaimTypes.Role, role));
}
ClaimsPrincipal principal = new ClaimsPrincipal(identity);
AuthenticationProperties _authentication = new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow
};
await _HttpContextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true });
我的创业公司
services.AddAuthentication(options =>
{
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(config =>
{
config.Cookie.Name = "login";
config.LoginPath = "/Account/Login";
config.ExpireTimeSpan = TimeSpan.FromMinutes(5);
});
和应用程序
app.UseAuthentication();
app.UseAuthorization();