Java服务有登陆界面时,postMan调用接口会显示跳转登陆界面

本文详细介绍了如何在服务中配置Shiro过滤器,包括设置匿名访问路径、登录及权限认证流程,以及自定义过滤器的实现。通过具体代码示例,展示了如何排除特定URL的拦截,以及如何设置身份验证和权限认证失败后的跳转页面。

需要在服务里添加Shiro过滤器配置,添加不需要拦截的访问。Controller接口方法的mapper

/**
 * Shiro过滤器配置
 */
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager)
{
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    // Shiro的核心安全接口,这个属性是必须的
    shiroFilterFactoryBean.setSecurityManager(securityManager);
    // 身份认证失败,则跳转到登录页面的配置
    shiroFilterFactoryBean.setLoginUrl(loginUrl);
    // 权限认证失败,则跳转到指定页面
    shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);
    // Shiro连接约束配置,即过滤链的定义
    LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
    // 对静态资源设置匿名访问
    filterChainDefinitionMap.put("/favicon.ico**", "anon");
    filterChainDefinitionMap.put("/tubiao.png**", "anon");
    filterChainDefinitionMap.put("/css/**", "anon");
    filterChainDefinitionMap.put("/docs/**", "anon");
    filterChainDefinitionMap.put("/fonts/**", "anon");
    filterChainDefinitionMap.put("/img/**", "anon");
    filterChainDefinitionMap.put("/ajax/**", "anon");
    filterChainDefinitionMap.put("/js/**", "anon");
    filterChainDefinitionMap.put("/gwm/**", "anon");
    filterChainDefinitionMap.put("/druid/**", "anon");
    filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
    // 退出 logout地址,shiro去清除session
    filterChainDefinitionMap.put("/logout", "logout");
    // 不需要拦截的访问
  filterChainDefinitionMap.put("/login", "anon,captchaValidate");
    filterChainDefinitionMap.put("/message/forwarding/**", "anon");
    filterChainDefinitionMap.put("/message/sendWorkNotices/**", "anon");
    // 系统权限列表
    // filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll());

    Map<String, Filter> filters = new LinkedHashMap<String, Filter>();
    filters.put("onlineSession", onlineSessionFilter());
    filters.put("syncOnlineSession", syncOnlineSessionFilter());
    filters.put("captchaValidate", captchaValidateFilter());
    filters.put("kickout", kickoutSessionFilter());
    // 注销成功,则跳转到指定页面
    filters.put("logout", logoutFilter());
    shiroFilterFactoryBean.setFilters(filters);

    // 所有请求需要认证
    filterChainDefinitionMap.put("/**", "user,kickout,onlineSession,syncOnlineSession");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

    return shiroFilterFactoryBean;
}
### Postman 打开后一直处于加载状态的解决方案 Postman 是一款广泛使用的 API 测试工具,但如果它在启动间处于加载状态,则可能是由于多种原因引起的。以下是针对该问题的具体分析和解决方法: #### 1. 清理缓存数据 如果 Postman 的本地缓存文件损坏或者占用过多空间,可能会导致其启动缓慢甚至无法正常加载。可以尝试清理这些缓存文件。 - **操作路径**: 删除 `C:\Users\<用户名>\AppData\Local\Postman` 文件夹中的内容。 - **注意事项**: 此操作会清除所有的自定义设置以及未保存的工作区配置[^1]。因此,在执行此操作前建议备份重要数据。 #### 2. 关闭多余的 Request 和 Collection 当 Postman 中存在大量未关闭的请求窗口或集合,程序会在启动过程中耗费额外间去初始化它们。这可能导致界面卡住并显示持续旋转的状态条。 - **优化措施**: 定期整理工作环境,及关闭不必要的标签页,并合理管理 collections[^3]。 #### 3. 更新至最新版本 旧版软件可能存在性能瓶颈或是兼容性缺陷,升级到最新的稳定发行版通常能够改善此类现象。 - 访问官方下载页面获取最新安装包链接:https://www.postman.com/downloads/ - 卸载当前版本后再重新部署新版本应用[^2]。 #### 4. 检查网络连接状况 某些情况下,较差的互联网质量也会影响应用程序的表现形式;特别是那些依赖在线同步功能的服务端组件部分更是如此。确认设备联网通畅无阻塞有助于排除外部干扰因素带来的影响。 #### 5. 调整 CORS 设置 (适用于特定场景) 对于涉及跨域资源共享(CORS)的操作而言, 如果服务器端未能正确处理相关头信息的话也可能引发类似的延迟表现 。确保目标服务支持必要的 CORS 配置选项; 对于基于 Node.js 构建的服务来说 , 可考虑引入专门用于简化这一过程的第三方模块 如 express-cors 并按照文档说明完成相应集成步骤 [^5]. ```javascript const cors = require('cors'); app.use(cors()); ``` 以上即为几种常见的应对策略组合而成的整体思路框架供参考实践验证效果如何.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值