Как создать пользовательские атрибуты, которые являются производными от AuthorizeAttribute?

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

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

public class NotAuthorizedWithoutProfileAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var userName = httpContext.Profile.UserName;
        var repository = new OWRepository();
        var userInfo = repository.GetUserInfo(userName);

        if (userInfo == null)
            return false;
        else
            return true;
    }
}

Проблема, с которой я сталкиваюсь, связана с именем пользователя, т.е.

var userName = httpContext.Profile.UserName;

Почему это дает ноль? Но так я получаю имя зарегистрированного пользователя.

1 ответ

Решение

Я не знаю, какова конфигурация вашего профиля, но это безопаснее всего HttpContextBase.User.Identity.Name чтобы получить имя пользователя.

Также подумайте об изменении названия вашего класса на более короткое, но и значимое RequireProfileAttribute,

Другие вопросы по тегам