Asp.net重定向之后无法访问,湖综合页面出现(HTTP 错误 401.0 - Unauthorized)

在IIS服务器上,启用Forms身份验证后,遇到HTTP401.0错误,通常是因为授权问题。文章可能详细介绍了如何分析和解决Asp.net应用在重定向后无法访问,以及如何配置IIS的身份验证设置以避免未经授权的访问错误。

在这里插入图片描述
Asp.net重定向之后无法访问,或者页面出现(HTTP 错误 401.0 - Unauthorized)
在IIS的身份验证将Forms身份验证设置为启用

### Shiro 配置中 /swagger-ui.html 路径放行失效的原因分析 尽管在 `filterChainDefinitionMap` 中配置了 `/swagger-ui.html` 和 `/swagger**/**` 等路径使用 `anon` 过滤器,但访问时仍返回 401 Unauthorized 错误。这通常与以下因素有关: #### 未完全放行 Swagger 所需的全部资源路径 Swagger UI 页面加载时不仅依赖 `/swagger-ui.html`,还会请求多个内部资源路径,如 `/v2/api-docs`、`/swagger-resources`、`/configuration/ui`、`/webjars/**` 等。如果这些路径未被明确列入白名单,则可能触发安全验证机制并导致 Token 失效提示。 ```java filterChainDefinitionMap.put("/swagger-ui.html", "anon"); filterChainDefinitionMap.put("/swagger/**", "anon"); filterChainDefinitionMap.put("/v2/api-docs", "anon"); filterChainDefinitionMap.put("/swagger-resources", "anon"); filterChainDefinitionMap.put("/configuration/ui", "anon"); filterChainDefinitionMap.put("/webjars/**", "anon"); ``` 上述配置确保所有 Swagger 相关的 API 接口和静态资源都被正确放行[^3]。 #### 过滤器链顺序或匹配规则设置不当 Shiro 使用通配符路径匹配机制,可能导致 `/swagger**/**` 没有覆盖所有子路径。建议使用更精确的路径表达式,例如 `/swagger/**` 来替代 `/swagger**/**`,以避免路径匹配失败的问题。此外,确保 `filterChainDefinitionMap` 的优先级高于其他认证过滤器,防止其被后续规则覆盖。 ```java Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>(); filterChainDefinitionMap.put("/swagger-ui.html", "anon"); filterChainDefinitionMap.put("/swagger/**", "anon"); filterChainDefinitionMap.put("/v2/api-docs", "anon"); filterChainDefinitionMap.put("/webjars/**", "anon"); filterChainDefinitionMap.put("/**", "authc"); // 其他路径需要认证 ``` 此配置方式可提高路径匹配的准确性,并确保匿名访问策略优先执行[^1]。 #### 自定义 Token 解析逻辑干扰 Swagger 访问 若在全局过滤器中强制解析 Token(如 JWT),即使路径被放行,Token 解析失败仍可能引发异常。可在 Token 解析前添加路径判断逻辑,跳过对 Swagger 资源的处理。 ```java @Override protected boolean preHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { HttpServletRequest httpRequest = (HttpServletRequest) request; String path = httpRequest.getRequestURI(); if (path.startsWith("/swagger") || path.equals("/swagger-ui.html") || path.startsWith("/v2/api-docs")) { return true; // 放行 Swagger 路径 } String token = extractToken(httpRequest); if (token == null || !validateToken(token)) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid Token"); return false; } return true; } ``` 通过这种方式,可以有效防止 Token 验证逻辑影响 Swagger UI 页面及资源的正常加载[^2]。 #### 缓存或浏览器问题 浏览器缓存可能导致旧的 Token 被错误携带,从而影响 Swagger 页面的访问权限。尝试清除浏览器缓存或使用无痕模式重新访问 `/swagger-ui.html` 页面,以排除该因素。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值