У меня есть объект с несколькими методами.Некоторые из которых украшены атрибутом [AuthenticationRequired]
.Когда и как я должен проверять, аутентифицирован ли вызываемый объект?
Это просто простая проверка null
, но я не знаю, как подключить его к фактическим вызовам методов.Я немного растерялся здесь.
Do I:
- Используйте StackFrame , определите метод верхнего уровня, вызываемый для этого класса, а затем вычислитевозможные проблемы с аутентификацией?
- Включить эту проверку в каждый метод с атрибутом?Тогда для чего этот атрибут хорош?
- Каким-то образом подключитесь ко всем вызовам методов в моем классе, выясняя, есть ли у них атрибут?
Структура класса примерно такая:
public class Stuff
{
public void ImFine()
{
CommonMethod("fine");
}
public void ImGood()
{
CommonMethod("good");
}
[AuthenticationRequired]
public void ImTerrible()
{
CommonMethod("terrible", true); // not an optional parameter.
}
[AuthenticationRequired]
public void ImDeceased()
{
CommonMethod("dead");
}
protected void CommonMethod(string state)
{
Console.WriteLine(string.Format("I feel {0}", state));
}
protected void CommonMethod(string state, bool pet)
{
if (pet)
{
Console.WriteLine(string.Format("My pet feels {0}", state));
}
else
{
Console.WriteLine(string.Format("I feel {0}", state));
}
}
}
Предположим, CommonMethod
чуть сложнее, и один не может вызвать другой (для того, чтобы один метод был общим для каждого вызываемого).