Swagger永久授权令牌

mhd8tkvw  于 2022-11-23  发布在  其他
关注(0)|答案(3)|浏览(251)

我正在ASP.NET Core MVC中开发Web API,不知道有没有办法让swagger中的授权令牌持久化,这样就不需要每次运行应用程序时都手动进行授权了,这样会让测试变得更容易。

j5fpnvbx

j5fpnvbx1#

本地存储器可用于保存授权令牌。
要将令牌存储到本地存储中,请在浏览器控制台中键入:

localStorage.setItem('authKey', 'the authorization token')

然后,使用请求拦截器从本地存储提供令牌作为Authorization头:

const ui = SwaggerUIBundle({
    url: "/swagger/v2/swagger.json",
    dom_id: '#swagger-ui',
    deepLinking: true,
    requestInterceptor: function (req) {
        var key = localStorage.getItem("authKey");

        if (key && key.trim() !== "") {
            req.headers.Authorization = 'Bearer ' + key;
            console.log('Authorized from authKey');
        }
    },
    presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset
    ],
    plugins: [
        SwaggerUIBundle.plugins.DownloadUrl
    ],
    layout: "StandaloneLayout",
})

window.ui = ui;
rdlzhqv9

rdlzhqv92#

如果您使用.NET CORESwashbuckle,则可以执行以下步骤来保存授权数据。
1.创建index.html用于自定义SWAGGER UI配置。index.html应基于the default version
1.打开上面刚创建的index.html文件,在window.onload事件中向persistAuthorization添加一行configObject.persistAuthorization = true;

f0brbegy

f0brbegy3#

您可以使用EnablePersistAuthorization选项:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
    c.EnablePersistAuthorization();
});

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/2213

相关问题