(ASP의 경우 MVC5 RC) 역할 시스템을 작동시키지 못했습니다. 내 데이터베이스에는 모든 필요 테이블이 있지만 롤에있는 사용자가 항상 false (SQL 예외가 아님)를 반환하는 경우 교정이 필요합니다!ASP의 역할 관리 MVC 5 (Microsoft.AspNet.Identity)
어딘가에 IPrincipal
의 역할 시스템을 활성화해야합니까?
테스트 코드 :
AccountController accCont = new AccountController();
// check role exist : result = true
var roleExist = await accCont.IdentityManager.Roles.RoleExistsAsync("61c84919-72e2-4114-9520-83a3e5f09de1");
// try find role by name : result = role object
var role = await accCont.IdentityManager.Roles.FindRoleByNameAsync("ProjectAdministrator");
// check with AccountController instance : result = true
var exist = await accCont.IdentityManager.Roles.IsUserInRoleAsync(User.Identity.GetUserId(), role.Id);
// check if current user is in role : result (both) = false????
var inRole = User.IsInRole(role.Id);
var inRole2 = User.IsInRole(role.Name);
는 또한 Microsoft.AspNet.Identity.Owin
네임 스페이스에서 IIdentity.GetUserId()
확장 메서드와 같은 사용자 정의 정상 참작을 구축하려고합니다.
namespace Microsoft.AspNet.Identity
{
public static class IdentityExtensions
{
public static string IsUserInRole(this IIdentity identity)
{
if (identity == null)
{
throw new ArgumentNullException("identity");
}
ClaimsIdentity identity2 = identity as ClaimsIdentity;
if (identity2 != null)
{
var result = identity2.FindFirstValue(IdentityConfig.Settings.GetAuthenticationOptions().RoleClaimType);
return null; // later result
}
return null;
}
}
}
그러나 청구 유형 RoleClaimType
에 대한 결과는 항상 null
입니다 :(난 정말이 붙어있어 .
User.IsInRole ("string role name")을 사용해 보셨나요? – nocturns2
또는 시도해 볼 수 있습니다 : string [] userroles = Roles.GetRolesForUser ("username") - 사용자 롤에 배열을 반환해야 순환하여 특정 역할이 포함되어 있는지 확인할 수 있습니다. – nocturns2