Мне поручено создать поставщика custommembership для наших методов для нашего проекта MVC 4.0.Поставщик пользовательского членства + пользовательский CodeAccessSecurityAttribute
Основываясь на атрибуте ([Authorize]
?), Он должен определить, разрешено ли попытке использовать этот метод.
В настоящее время я получил это:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class TestAuthorize : CodeAccessSecurityAttribute
{
public TestAuthorize(SecurityAction action)
: base(action)
{
}
public override IPermission CreatePermission()
{
throw new NotImplementedException();
}
}
Когда я добавляю return new PrincipalPermission(null,null,true)
Я ожидаю, что разрешение будет действительным, и пользователь имеет доступ к методу.
Когда я добавляю return new PrincipalPermission(null.null,false)
Я ожидаю, что разрешение будет недействительным, и пользователю будет отказано в доступе к методу.
Однако, он останавливается только после того, как я использую throw new SecurityException("You are denied access")
, который также заставляет приложение MVC останавливаться, если это исключение не обрабатывается на стороне клиента (используя попытку catch).
Возможно ли, чтобы мы справились с этим исключением в нашем проекте MVC?
как пример того, что мы хотим быть выполнены с использованием атрибутов:
[TestAuthorize(SecurityAction.Demand)]
public List<string> GetList()
{
//if access, return new List();
//if no access, return null;
}
Я пробовал это; Nomather возвращает true false. Он по-прежнему дает человеку доступ к методу. –
В другом вопросе мне сказали, что атрибут Authorize не то, что я хочу, потому что я предоставляю веб-сервис, а не веб-сайт. Авторизованный атрибут работает только тогда, когда данный метод/контроллер/объект имеет httpcontext –