Авторизовать расширения атрибутов, новое ключевое слово

Я хотел бы расширить фильтр ключевых слов для атрибута авторизации без создания настраиваемого объекта авторизации.

Я знаю, что в ключевом слове встроены роли, пользователи. Я хотел бы добавить новый уровень вызова ключевого слова и посмотреть, превышает ли уровень доступа пользователя определенный уровень.

Это позволило бы мне создать только одну роль для пользователя.

Использование этого было бы

[Authorize(level > 1)]

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы лучше понять проблему, которую я пытаюсь решить.

Я смотрел, но не смог решить эту проблему. Можете ли вы предоставить образец кода? для этого у меня так. Я получаю сообщение об ошибке, когда использую фильтр уровня.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
[Auth(Level > 1)]
public ActionResult Index()
{
}

public class Auth : AuthorizeAttribute
{
    public int Level { get; set; }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
      base.OnAuthorization(filterContext);
    }
}

person Thuthinh    schedule 19.02.2013    source источник


Ответы (1)


Нельзя просто ДОБАВИТЬ новые фильтры во встроенный AuthorizeAttribute. Вам нужно будет создать новый атрибут, который наследуется от AuthorizeAttribute.

На SO есть масса сообщений в блогах и вопросов о создании пользовательских AuthorizeAttributes.

РЕДАКТИРОВАТЬ: Хорошо, хорошее начало. Ваша проблема в том, что вы не можете сделать Level > 1 так, как пытаетесь. Предполагая, что вы пытаетесь сказать, какую аутентификацию передавать, когда число пользователей Level больше 1, вы можете изменить свое свойство в атрибуте, чтобы указать это.

E.g.

public class Auth : AuthorizeAttribute
{
    public int MinLevel { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //This is where you will need to determine if the user is authorized based upon the minimum level.
        base.OnAuthorization(filterContext);
    }
}
person Alastair Pitts    schedule 19.02.2013
comment
Я посмотрел и не смог понять, как заставить работать новое ключевое слово в моей пользовательской аутентификации. Можете ли вы предоставить образец. Это то, что я получил до сих пор. - person Thuthinh; 19.02.2013
comment
@user2085818 user2085818 Я привел вам пример - person Alastair Pitts; 20.02.2013