【问题标题】:Is there a way to Make Web API method Internal?有没有办法使 Web API 方法内部化?
【发布时间】:2020-04-24 10:12:03
【问题描述】:

我收到的文档提到验证安全令牌是一个内部函数。还表示它不会暴露给 Web 服务用户的外部消费。能否请您告诉我有关此要求以及如何实现 web 方法的想法?

【问题讨论】:

    标签: c# asp.net-core-webapi webapi


    【解决方案1】:

    internal是c#中的访问修饰符,你可以使用internal来写一个方法。这样就不会暴露在外面了,

    internal bool ValidateToken()
    {
       //Your business logic
    }
    

    From MSDN:

    internal:该类型或成员可以被同一个中的任何代码访问 程序集,但不是来自另一个程序集。

    【讨论】:

    • 感谢您的即时回复。不幸的是,这不是我的意思。特定的 Web API 方法不得暴露给外部方。但是应该为给定的域访问它。我认为它与 CORS 类似。
    【解决方案2】:

    使用 CORS 属性来装饰您希望对给定域可访问的特定方法。在您的 appsettings 中将该域配置为策略。

    [EnableCors("restricted-domain-policy")]
    public Task<IActionResult> PostUserReport()
    {
         // your internal/domain specific
    }
    

    也有相反的方式,比如使用

    [DisableCors("external-domain-policy")]
    

    您可以在 startup.cs 中配置为两个不同的策略设置。

    services.AddCors(feature => {
                feature.AddPolicy(
                    "restricted-domain-policy",
                    builder => builder
                                    .SetIsOriginAllowed((host) => true)
                                    .AllowAnyHeader()
                                    .AllowAnyMethod()
                                    .AllowAnyOrigin()
                                    .AllowCredentials()
                                );
            });
    
    services.AddCors(feature => {
                    feature.AddPolicy(
                        "external-domain-policy",
                        builder => builder
                                        .SetIsOriginAllowed((host) => true)
                                        .WithHeaders()
                                        .WithMethods(<your method array>)
                                    );
                });
    

    您可以在任一策略中探索 WithHeaders()、WithOrigin() 等以进行相应配置。

    【讨论】:

    • 非常感谢。我会试试这个场景。
    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2012-03-02
    • 1970-01-01
    相关资源
    最近更新 更多