我在我的ASP.NET核心控制器中有一个动作。此操作有多条路线:
public class TestController
{
[HttpGet("test1")]
[HttpGet("test2")]
public async Task<object> Test()
{
//do something
}
}
这两条线路需要不同的访问权限,具体如下:
test/test1
需要有role1
权限test/test2
需要有role2
权限我将重写HttpGet
类并实现IAuthorizationFilter
接口:
public class AuthGet : HttpGet, IAuthorizationFilter
{
public AuthGet(string template,string roleName) : base(template)
{
}
public void OnAuthorization(AuthorizationFilterContext context)
{
//check auth
}
}
然后,我将HttpGet
替换为AuthGet
。这样,两个AuthGet的OnAuthorization
都将执行。但我无法区分test/test1
和test/test2
。
如何根据Action
上的不同路由确定不同的权限
发布于 2018-03-17 19:58:57
没有理由把它保留在一个单一的方法上。只需创建private
方法来完成实际工作,并创建两个简单返回该private
方法的值的操作:
[AuthGet("test1", "role1")]
public async Task<object> Test1()
{
return await Test(1);
}
[AuthGet("test2", "role2")]
public async Task<IActionResult> Test2()
{
return await Test(2);
}
private async Task<object> Test(int testRoute)
{
if (testRoute == 1)
{
//do something
}
else
{
// do somthing else
}
}
https://stackoverflow.com/questions/49332622
复制相似问题