首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于.net核心2 mvc中相同的操作,不同的路由和方法

对于.net核心2 mvc中相同的操作,不同的路由和方法
EN

Stack Overflow用户
提问于 2018-03-17 04:50:47
回答 1查看 342关注 0票数 0

我在我的ASP.NET核心控制器中有一个动作。此操作有多条路线:

代码语言:javascript
运行
复制
public class TestController
{
    [HttpGet("test1")]
    [HttpGet("test2")]
    public async Task<object> Test()
    {
        //do something
    }
}

这两条线路需要不同的访问权限,具体如下:

  • 路由:test/test1需要有role1权限
  • 路由:test/test2需要有role2权限

我将重写HttpGet类并实现IAuthorizationFilter接口:

代码语言:javascript
运行
复制
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/test1test/test2

如何根据Action上的不同路由确定不同的权限

EN

回答 1

Stack Overflow用户

发布于 2018-03-17 19:58:57

没有理由把它保留在一个单一的方法上。只需创建private方法来完成实际工作,并创建两个简单返回该private方法的值的操作:

代码语言:javascript
运行
复制
[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
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49332622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档