我正在ASP.net中构建一个网站,我创建了一个属性,其中包含要完成的函数的要求。
现在我必须在函数顶部有一些代码来检查需求(如下所示),并且由于它在每个函数中都是相同的,我想知道是否有办法自动调用UserAction.Rule.IsValid函数。我还需要能够传递MethodBase.GetCurrentMethod(),并返回一个enum / int。
现在是我的代码。
[UserAction.Rule(UserAction.Rule.RestrictionFailRequirements.RequiresOneRestriction, new int[] { 2, 11 })]
public static int Login(string loginName, string password)
{
if (!UserAction.Rule.IsValid(MethodBase.GetCurrentMethod()))
return 4;//User is banned
//Login stuff.....
}
编辑:我设法找到关于这个主题的更多信息,之后我从属性派生了UserAction.Rule,而不是MVC库中的AuthorizeAttribute。
现在我已将其更改为AuthorizeAttribute,它似乎没有调用OnAuthorization。我是否需要在我尝试使用该属性的函数中调用它?
所以我的代码现在看起来像这样,在UserAction.Authorize中我覆盖了OnAuthorization。
[Authorize]
[UserAction.Authorize(UserAction.Authorize.RestrictionFailRequirements.RequiresOneRestriction, new int[] { 1, 11 })]
public static int RegisterUser(string regID, string username, string email, string password, string firstname, string lastname)
{
//Login stuff.....
}