Я читал много сообщений в блогах и ответов stackoverflow, но все же я не могу найти проект с открытым исходным кодом в реальном мире, который использует проверку подлинности на основе утверждений и авторизацию, чтобы я мог получить идея о том, как их реализовать.Утверждение на основе утверждений с помощью ASP.NET MVC
До сих пор я мог найти Thinktecture.IdentityModel и this blog, применяя авторизацию на основе примера на веб-сайте примера. Если вы, ребята, можете указать мне некоторые проекты с открытым исходным кодом, используя претензии, это было бы очень полезно.
Что мне интересно, так это как получить претензии к моему приложению, используя базу данных.
До сих пор, что я пробовал, заключается в том, что использование хранилища претензий в памяти для имитации databsae, я создал CustomClaimsTransformer
и CustomAuthorisationManager
вот так.
public class CustomClaimsTransformer : ClaimsAuthenticationManager
{
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
//validate name claim
string nameClaimValue = incomingPrincipal.Identity.Name;
return CreatePrincipal(nameClaimValue);
}
private ClaimsPrincipal CreatePrincipal(string userName)
{
int userId = ClaimStore.Users.First(u => u.Value == userName).Key;
var claims = ClaimStore.ClaimsSet.Where(c => c.Key == userId);
var claimsCollection = claims.Select(kp => kp.Value).ToList();
return new ClaimsPrincipal(new ClaimsIdentity(claimsCollection, "Custom"));
}
}
public class CustomAuthorisationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
string resource = context.Resource.First().Value;
string action = context.Action.First().Value;
if (action == "Show" && resource == "Code")
{
bool likesJava = context.Principal.HasClaim(ClaimStore._httpMyclaimsUsers, "True");
return likesJava;
}
else if (action == "Read" && resource == "Departments")
{
bool readDeps = context.Principal.HasClaim(ClaimStore._httpMyclaimsDepartments, "Read");
return readDeps;
}
return false;
}
}
Как реализовать их в реальном мире, не имея слишком много условий ЕС?
как вы в конечном итоге это сделали? можете ли вы предоставить ответ – Moes