首页 > 解决方案 > 使用自定义控制器进行匿名身份验证

问题描述

我正在尝试在 Acumatica 中实现自定义控制器以用于开发目的。但我似乎无法弄清楚如何回避 Acumatica 身份验证并允许未经身份验证的访问。

这是我的控制器:

https://www.acumatica.com/blog/using-asp-net-web-api-mvc-with-acumatica/

    [RoutePrefix("test")]
    public class TestController: ApiController
    {
        [HttpGet]
        [Route()]
        [AllowAnonymous]
        public IHttpActionResult PerformAction()
        {
            return Ok("Actions Available");
        }
}

这是我的创业公司

public class Startup
{
    public static void Configuration(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }
}

public class ServiceRegistration : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        GlobalConfiguration.Configure(Startup.Configuration);
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
    }
}

但是当我在 Postman 中向 {baseUrl}/test 发送 GET 时,它返回 401 未授权。如果我打开浏览器,登录并转到同一条路线,我会收到“可用的操作”

在自定义 WebApi 控制器上允许匿名身份验证我缺少什么?

谢谢

标签: acumatica

解决方案


可以在扩展库的 Autofac 模块内自定义授权。参考 PX.Export、PX.Hosting(这是为 2021R1 完成的)

public class Startup
{
    public static void Configuration(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }
}

public class ServiceRegistration : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        GlobalConfiguration.Configure(Startup.Configuration);
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

// Configuration of Authorize here
        builder.Configure<AuthenticationManagerOptions>(options =>
            options.AddLocation("sourcecontrol").WithAnonymous());
    }
}

推荐阅读