我把视频变成链接_如何把长链接变成短链接?3个工具帮你实现

本文介绍三款短链接生成工具:百度短网址、新浪短网址和毛驴短链。这些工具能将冗长的链接转换为简洁的形式,便于分享和使用。百度短网址提供点数计费服务,新浪短网址完全免费且长期有效,毛驴短链还支持数据统计功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不管是文章还是视频的链接,很多时候都是长长的一串,如果是发给别人的话,就会显得啰里啰嗦,占用空间大不说,还非常难看,使用起来不方便。其实长链接也是能够变成短链接的,下面就带来三个工具,让链接变得美观又简洁。

1b8e4028b6cdc8222c39c4f4af34f393.png

1、百度短网址

百度短网址就提供专门的短链接生成服务,具有稳定、快速、安全的特点,还能批量生成短链接或者短链还原。百度短网址生成的短链接有效期可以进行选择,一年或者长期,也比较人性化。使用起来也非常简单,只要粘贴长链接,点击缩短网址就能实现。

注意:百度短网址采用点数计费,所有用户每月免费享有100点。短网址跳转一次消耗1个点;创建一条一年有效的短网址消耗1个点;创建一条长期有效的短网址消耗2个点;欠费后将无法创建短网址,已创建的短网址将出现延迟跳转。

8144499c35c59278a204cb06657fa8a6.png

2、新浪短网址

新浪短网址也能让长链接变成短链接,把冗长的网址缩短成8个字符以内的短网址,还可以选择短网址的后缀,生成百度的短网址、谷歌的短网址。最关键的是新浪短网址完全免费,生成的短网址长期有效,使用方法跟百度短网址一样,粘贴链接之后,点击压缩一下就能生成了。新浪短连接还能还原短链,具有匿名跳转的功能。

5ca1193428d338bcc5389b64bd1aadf9.png

3、毛驴短链

毛驴短链不仅仅是能把长链接变成短链接,它还支持查看短链的访问量、访客量、IP、来源、地域等多维度的数据,进行数据统计,便于分析。如果想知道链接分发之后的点击情况,可以使用毛驴短链,数据直观全面。

注意:如果是没有登录注册直接生成的短链,最多被访问30次,有效期3天。注册之后,免费版能够生成100个短链接,只能查看近一个小时的访问记录。

8b1222df3234ada7794ca0910103710b.png

以上就是为大家带来的三个能够生成短链接的工具了,它们都有各自的特点和使用功能,生成短链接也有不同的要求,根据你的需求进行选择吧。

<think>嗯,用户遇到了一个问题:“无法解析符号 &#39;WebSecurityConfigurerAdapter&#39;”,这通常发生在他们升级到Spring Security 6.x或Spring Boot 3.x之后。用户可能之前使用的是旧版本的Spring Security,比如5.x,然后升级了依赖,导致旧的代码引用失效。 首先,我需要确认这个错误的原因。WebSecurityConfigurerAdapter是Spring Security 5.x及之前版本的核心配置类,用于通过继承来配置安全设置。但在Spring Security 6.0和Spring Boot 3.0中,这个类被弃用了,改为使用基于组件的配置方式,也就是通过@Bean定义SecurityFilterChain和UserDetailsService。 用户可能是在升级项目后,旧的代码没有更新,所以编译器找不到这个已弃用的类,从而报错。需要检查他们的Spring Boot和Spring Security版本。如果用户使用的是Spring Boot 3.x,对应的Spring Security必然是6.x,这时候必须迁移到新的配置方式。 接下来,我需要解释为什么会有这个变化。Spring团队为了推动更现代的、基于函数式编程的配置方式,移除了传统的继承方式。新的方法更灵活,减少了样板代码,符合当前Java开发的趋势。 然后,用户可能需要具体的解决方案。给出新旧代码对比的例子会很有助。比如,之前继承WebSecurityConfigurerAdapter的类,现在应该被替换为一个配置类,其中定义SecurityFilterChain和UserDetailsService的Bean。同时,要提到常见的错误点,比如方法名的变化(authorizeRequests变成authorizeHttpRequests),以及密码编码器的强制使用,避免用户继续使用明文密码导致问题。 还需要考虑用户可能的其他疑问,比如如何配置多个角色、处理CSRF或CORS,以及如何测试新的配置。提供官方文档链接和示例代码仓库可以让他们进一步学习。 最后,确保回答结构清晰,逐步引导用户解决问题,避免技术术语过多,用简单的中文解释概念,并提供实际代码示例,助他们理解迁移步骤。同时,提醒他们检查依赖版本,确认是否确实在使用Spring Boot 3.x,因为用户之前提到的版本可能有误,这也是需要注意的地方。</think>### 问题分析:无法解析符号 `WebSecurityConfigurerAdapter` 此问题通常发生在以下两种场景中: 1. **项目依赖版本不匹配**:你使用的 Spring Boot 3.x 或 Spring Security 6.x 版本已弃用该类的支持 2. **配置方式过时**:Spring Security 6.0 开始移除了基于继承的配置方式,改用函数式编程风格 --- ### 原因解释 `WebSecurityConfigurerAdapter` 是 Spring Security **5.x 及更早版本**的核心配置类,用于通过继承方式配置安全规则。 但在 **Spring Security 6.0 + Spring Boot 3.0** 版本中: - 该接口已被完全弃用 - 官方推荐使用基于 `SecurityFilterChain` 的配置方式 - 需要改用 `@Bean` 声明式配置 --- ### 解决方案(迁移到新配置) #### 1. 旧代码示例(已失效) ```java // ❌ 过时代码(Spring Security 5.x) @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/public/**").permitAll() .anyRequest().authenticated() .and() .formLogin(); } } ``` #### 2. 新配置方式(Spring Security 6.x+) ```java // ✅ 新配置方式(Spring Security 6.x) @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/public/**").permitAll() // 注意方法名变化 .anyRequest().authenticated() ) .formLogin(form -> form .loginPage("/login") .permitAll() ); return http.build(); } // 可选:自定义用户存储(替代原来的 configure(AuthenticationManagerBuilder)) @Bean public UserDetailsService userDetailsService() { UserDetails user = User.builder() .username("user") .password("{bcrypt}$2a$10$...") // 必须使用密码编码器 .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } } ``` --- ### 关键变化总结 | **旧版本特性** (5.x) | **新版本特性** (6.x) | |-----------------------------|---------------------------------------------| | 继承 `WebSecurityConfigurerAdapter` | 使用 `@Bean` 定义 `SecurityFilterChain` | | `authorizeRequests()` | `authorizeHttpRequests()`(方法名变化) | | `antMatchers()` | `requestMatchers()`(更灵活的匹配方式) | | 明文密码(如 `{noop}password`) | **强制要求**密码编码器(如 BCrypt) | --- ### 常见错误修复 1. **依赖版本检查**: ```xml <!-- 确认 Spring Boot 3.x 依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> <!-- 最新稳定版 --> </parent> ``` 2. **密码存储必须编码**: ```java // 正确示例(使用 BCrypt) UserDetails user = User.builder() .username("admin") .password("{bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG") .roles("ADMIN") .build(); ``` 3. **配置方法链变化**: ```java // 旧方式:.and() 链式调用 http.csrf().disable().and().cors(); // 新方式:直接链式调用(无需 .and()) http.csrf(csrf -> csrf.disable()) .cors(Customizer.withDefaults()); ``` --- ### 扩展建议 1. **学习官方迁移指南**: [Spring Security 6.0 迁移文档](https://docs.spring.io/spring-security/reference/6.0/migration/index.html) 2. **使用 IDE 辅助**: - IntelliJ 的 `Alt+Enter` 快速修复功能可以自动建议替代方案 - 安装 Spring Assistant 插件获取配置提示 3. **测试工具推荐**: ```java @SpringBootTest @AutoConfigureMockMvc class SecurityTest { @Test @WithMockUser(username = "user", roles = "USER") void testAuthenticatedAccess() throws Exception { // 测试受保护端点 } } ``` 如果仍有疑问,可以提供你的完整配置代码片段,我可以你诊断具体问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值