使用Swashbuckle 2.3.0实现Cookie认证并设置SESSIONID的技术问询
我来帮你搞定Swashbuckle 2.3.0里的Cookie认证配置,让你能通过Swagger UI的Authorize按钮设置SESSIONID Cookie。你现有的代码已经有了基础的Swagger配置,只需要补充安全定义和全局安全要求这两块内容就行,具体操作如下:
1. 补充Swagger的安全定义与要求
在你的ConfigureSwagger方法里,添加Cookie认证的安全定义,告诉Swagger我们要使用Cookie作为认证方式,同时配置全局安全要求,让接口默认应用这个认证规则。修改后的完整代码如下:
public static void ConfigureSwagger(IServiceCollection services) { services.AddSwaggerGen(options => { var info = new Info() { Title = "Title", Description = "Description", License = new License { Name = "Sample Name", Url = "http://www.example.com/" } }; options.SwaggerDoc("v1", info); // 添加Cookie认证的安全定义 options.AddSecurityDefinition("CookieAuth", new ApiKeyScheme() { Description = "请输入SESSIONID Cookie,格式为:SESSIONID=你的会话ID值", Name = "Cookie", In = "cookie" }); // 添加全局安全要求,让所有接口默认启用该认证 options.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>() { { "CookieAuth", Enumerable.Empty<string>() } }); }); }
2. 后端Cookie认证中间件配置(必要前提)
别忘了确保你的项目已经启用了Cookie认证中间件,在Startup的Configure方法里添加以下代码(适配你使用的.NET版本):
// .NET Core 2.x及类似版本的写法 app.UseCookieAuthentication(new CookieAuthenticationOptions() { AuthenticationScheme = "CookieAuth", LoginPath = new PathString("/Account/Login"), AccessDeniedPath = new PathString("/Account/AccessDenied") });
3. 在Swagger UI中设置SESSIONID Cookie
配置完成后启动项目,打开Swagger UI页面:
- 点击右上角的Authorize按钮
- 在弹出的认证窗口中,找到
CookieAuth对应的输入框,输入SESSIONID=你的实际会话ID(替换成有效的SESSIONID值) - 点击Authorize完成认证,之后所有接口请求都会自动带上这个Cookie
这样就能实现你想要的效果啦!
内容的提问来源于stack exchange,提问作者Hasan Hasanov
相关产品推荐
相关产品推荐

