У меня есть контроллер, к которому можно получить доступ у пользователя, имеющего привилегии администратора или медсестру. Затем по отдельному действию я могу сделать более строгим, если захочу. Прямо сейчас у меня есть что-то вроде этогоНесколько пользовательских ролей в Authorize
[AuthorizeUser(UserRole = "Admin", OrganizationType = "Institution")]
Это прекрасно работает. Но я бы что-то вроде
[AuthorizeUser(UserRole = "Admin,Nurse", OrganizationType = "Institution")]
AuthorizeUser на заказ разрешение
public class AuthorizeUser : AuthorizeAttribute
{
public string UserRole { get; set; }
public string OrganizationType { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
return CheckOrganizationType
.checkRole(this.UserRole, this.OrganizationType, Auth.CurrentUser);
}
}
public static bool checkRole(String role, String organizationType, User user)
{
RolesType rt = null;
OrganizationType ot = null;
foreach (UserRoles ur in user.GetUserRoles())
{
rt = RolesType.Get(ur.organizationTypeId,ur.roleTypeId);
ot = OrganizationType.Get(ur.organizationTypeId, "1");
}
if (rt != null && rt.Name == role && ot != null && ot.Name == organizationType)
{
return true;
}
else
{
return false;
}
}
, а затем проверить, если текущий пользователь имеет какой-либо из определенных ролей. Как это может быть сделано? Есть идеи?
Что приписывать это 'AuthorizeUser'? это не родной – Luizgrs
@Luizgrs только что обновил мой вопрос. – mohsinali1317
Мы не можем вам помочь, если вы не включили CheckOrganizationType.checkRole (реализация – InferOn