Как создать пользовательские атрибуты, которые являются производными от 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
,