Я использую AAD для входа в систему и аутентификации пользователя, к сожалению, нет никаких основанных на ролях, которые я могу использовать из AAD, поэтому мне нужно полагаться на роли, установленные в БД, однако я не знаю как добавить роль для этого пользователя, основываясь на том, что находится в БД, не затрагивая куки-файлы аутентификации?
Мне, однако, удалось добавить роль внутри моего Startup.Auth
в app.UseOpenIdConnectAuthentication
, например
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = (context) =>
{
context.HandleResponse();
context.OwinContext.Response.Redirect("/Account/Login");
return Task.FromResult(0);
},
SecurityTokenValidated = async (x) =>
{
var identity = x.AuthenticationTicket.Identity;
//check the name, add additional claims
identity.AddClaim(new Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "Administrator"));
await Task.FromResult(0);
}
}
Однако, поскольку я добавляю Administrator
вручную, я не знаю, как это изменить в зависимости от роли, связанной с пользователем в БД. Я думал, что, возможно, смогу обновить роль, как только она попадет на мой контроллер (который является моим домом / индексом), но изо всех сил пытался найти что-то, что работает.
Я хочу использовать User.IsInRole("UserRoleNameHere")
.
Любая помощь или идеи будут с благодарностью!