我正在尝试获取控制器和控制器方法的属性,但我似乎无法在DNX Core 5.0中提供必要的方法和属性。我想获得用户访问给定方法所需的角色。例如,如果我有这个
[Authorize(Roles = "Admin")]
public class UserController : Controller
{
public IActionResult Index()
{
return View();
}
}
我希望能够让用户需要Admin角色才能访问此控制器。我的dnxcore50的project.json文件如下所示:
"dnxcore50": {
"dependencies": {
"System.Collections": "4.0.10-beta-*",
"System.Collections.Concurrent": "4.0.10-beta-*",
"System.IO": "4.0.10-beta-*",
"System.Linq": "4.0.0-beta-*",
"System.Linq.Expressions": "4.0.10-beta-*",
"System.Reflection": "4.0.10-beta-*",
"System.Reflection.Emit": "4.0.0-beta-*",
"System.Reflection.Emit.Lightweight": "4.0.0-beta-*",
"System.Reflection.Extensions": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.0.0-beta-*",
"System.Reflection.Primitives": "4.0.0-beta-*",
"System.Runtime": "4.0.20-*",
"System.Runtime.Extensions": "4.0.10-beta-*",
"System.Runtime.CompilerServices.VisualC": "4.0.0-beta-*",
"System.Runtime.InteropServices": "4.0.20-beta-*",
"System.Text.Encoding": "4.0.10-beta-*",
"System.Text.RegularExpressions": "4.0.10-beta-*",
"System.Threading": "4.0.10-beta-*"
}
}
关于如何在DNX Core 5.0中获得必要的方法/属性或有关于如何解决此问题的任何其他建议的任何想法?
答案 0 :(得分:3)
如果查看github上的源代码,可以看到它是如何处理的(第94行):
如您所见,您必须使用GetTypeInfo()来使用GetCustomAttributes()方法。在您的代码中,您可以执行以下操作:
using System.Reflection;
...
obj.GetType().GetTypeInfo().GetCustomAttributes();