当前位置: 首页 > news >正文

网站备案多少钱seo关键词排名优化是什么

网站备案多少钱,seo关键词排名优化是什么,谷歌搜索排名,wordpress模板主题欢迎来到一场技术与幽默交织的冒险!今天,我们将跳进 Spring Boot 的世界,探索如何通过 用户名、手机号、邮箱 等多种方式实现登录。想象一下,用户在登录时可以随心所欲地选择——就像你今天早上纠结到底是要喝美式咖啡还是拿铁&am…

欢迎来到一场技术与幽默交织的冒险!今天,我们将跳进 Spring Boot 的世界,探索如何通过 用户名手机号邮箱 等多种方式实现登录。想象一下,用户在登录时可以随心所欲地选择——就像你今天早上纠结到底是要喝美式咖啡还是拿铁!而我们要做的就是为他们提供这些选择,确保他们都能毫无阻碍地进入我们的系统。

目标? 用一种轻松而富有趣味的方式带你构建一个支持多种登录方式的 Spring Boot 项目!好了,系好安全带,让我们开始这段奇妙的代码之旅。

一、需求分析

首先,让我们明白我们要做什么。如果你还记得那些老式网站,登录方式非常单一:只允许使用用户名登录,且密码必须是8个字符的 “password123” 这种经典组合。好吧,时代已经不同了,现在的人们懒得记用户名和密码,他们更愿意使用手机、邮箱,甚至脸书、微信等社交账号来登录。为什么? 因为每个人都有点“懒得输入太多字”的心理。

因此,我们的目标很明确——让用户能有更多的选择方式来登录:

  1. 用户名 + 密码(这是经典款)
  2. 手机号 + 密码(这就很潮流了)
  3. 邮箱 + 密码(一看就很高端)

这就像在餐厅点菜——我们提供多样化的菜单,用户随便选,爱吃啥点啥!

二、搭建你的基础工程:项目配置

没有基础设施的建筑就是一场灾难,而没有配置文件的 Spring Boot 项目就是——废的。所以,第一步,我们要确保项目的所有配置正确无误。

在你的 pom.xml 文件中,加入我们即将用到的一些核心依赖。包括 Spring Security(因为我们要玩登录认证嘛)、JPA(因为我们要有地方存储用户信息),以及 MySQL 数据库的连接驱动。

<dependencies><!-- Spring Boot Security 依赖,用于管理我们的登录和认证 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!-- Spring Boot Data JPA 依赖,用来进行数据库操作 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- Spring Boot Web 依赖,用来处理 Web 请求 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySQL Connector 依赖,毕竟数据还是要放进数据库的 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- Lombok 用来减少代码量,让我们不用再写那些烦人的 getter/setter --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

好了,既然我们已经有了正确的配置依赖,现在就像是我们已经准备好了一杯现磨咖啡,接下来该享受喝咖啡的过程了!

三、数据库设计:让用户信息有个家

每个登录系统都需要一个地方存储用户信息,否则它就像你早上出门忘了带钥匙一样尴尬。我们要创建一个用户表来保存用户名、手机号、邮箱以及密码。这里我们使用 JPA 来简化数据库操作,不必再写那些琐碎的 SQL 语句。

@Entity
@Table(name = "users")
@Data
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;      // 用户名private String password;      // 密码(重要的东西,当然要加密保存)private String email;         // 邮箱private String phoneNumber;   // 手机号
}

你可能会问,为什么不加个字段来存储用户的昵称、性别、兴趣爱好?嗯,那确实也是个不错的想法,但我们今天的重点是登录系统——所以先忍一忍,别跑偏了。

四、用户存储库:我们需要一些查询方式

数据库表已经有了,但我们还需要写一些代码来查询这些用户信息。为此,我们需要创建一个存储库类,用于根据用户名、手机号或者邮箱来查找用户。

public interface UserRepository extends JpaRepository<User, Long> {Optional<User> findByUsername(String username);Optional<User> findByEmail(String email);Optional<User> findByPhoneNumber(String phoneNumber);
}

瞧,这就是我们数据层的三剑客:findByUsernamefindByEmailfindByPhoneNumber。有了它们,我们可以方便地从数据库中查询到用户。

五、用户认证服务:让 Spring Security 成为我们的好帮手

接下来,我们要告诉 Spring Security 如何根据不同的登录信息来加载用户。这部分代码就像是一道考题,告诉系统:“嘿,如果用户输入了个手机号或者邮箱,你该如何处理?”

@Service
public class CustomUserDetailsService implements UserDetailsService {@Autowiredprivate UserRepository userRepository;@Overridepublic UserDetails loadUserByUsername(String loginInput) throws UsernameNotFoundException {Optional<User> userOpt;// 判断输入的登录信息类型,来确定是邮箱、手机号还是用户名if (loginInput.contains("@")) {// 邮箱登录userOpt = userRepository.findByEmail(loginInput);} else if (loginInput.matches("\\d+")) {// 手机号登录userOpt = userRepository.findByPhoneNumber(loginInput);} else {// 用户名登录userOpt = userRepository.findByUsername(loginInput);}// 如果用户不存在,抛出异常User user = userOpt.orElseThrow(() -> new UsernameNotFoundException("用户不存在"));// 返回 Spring Security 所需的 UserDetails 对象return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>());}
}

这个类做的事情就像是一个门卫,不管用户输入的是用户名、邮箱,还是手机号,都会验证一遍,确保用户是真实存在的。

六、密码加密:不要让用户的密码变成人人可知的小秘密

安全问题非常重要,如果我们把密码明文存储,那就相当于把家里的钥匙放在门口的地垫下面,绝对是个坏主意。幸运的是,Spring Security 自带了密码加密支持,我们可以使用 BCryptPasswordEncoder 来加密用户密码。

@Bean
public PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();
}

然后在用户注册时,对密码进行加密后再存入数据库:

@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Autowiredprivate PasswordEncoder passwordEncoder;public void registerUser(User user) {// 密码加密user.setPassword(passwordEncoder.encode(user.getPassword()));userRepository.save(user);}
}

有了这个小魔法,所有密码都会以加密形式存储,即便有人黑进了数据库,也只能看到一串毫无意义的字符。

七、Spring Security 配置:别忘了这位主角

一部电影怎么能没有导演?而我们的导演就是 Spring Security 的配置类。我们将在这里配置登录逻辑,告诉系统如何处理不同的登录方式。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate CustomUserDetailsService userDetailsService;@Autowiredprivate PasswordEncoder passwordEncoder;@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {// 配置认证方式,使用我们自定义的 UserDetailsService 和密码加密方式auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder);}@Overrideprotected void configure(HttpSecurity http) throws Exception {// 设置允许哪些 URL 可以被匿名访问http.csrf().disable().authorizeRequests().antMatchers("/login", "/register").permitAll()  // 允许登录和注册页面被访问.anyRequest().authenticated()  // 其他页面都需要认证.and().formLogin().loginPage("/login")  // 设置自定义的登录页面.defaultSuccessUrl("/home", true)  // 登录成功后跳转的页面.permitAll().and().logout().permitAll();}
}

在这段配置中,我们告诉 Spring Security 使用我们自定义的 CustomUserDetailsService 来处理登录请求。我们还设置了登录页面和成功后的重定向页面,显得很专业有木有?

八、最后的话:为用户提供选择,登录就像选咖啡一样简单

现在,我们已经成功搭建了一个支持多种方式登录的系统。不论是使用用户名、手机号还是邮箱,用户都可以自由选择,就像他们早晨选择喝哪种咖啡一样简单。而你,作为这家“咖啡店”的老板,成功地提供了更多的便利和选择!

所以,下次当你看到用户轻松登录时,可以骄傲地拍拍自己的肩膀,毕竟,你让这个世界的登录系统变得更加多样化了。

(Ps:如果用户抱怨登录总是出错,请告诉他们密码不能用“123456”,那样实在太“平庸”了点 😜)

http://www.shuangfujiaoyu.com/news/2367.html

相关文章:

  • 专业提供深圳网站设计公司推广系统
  • 网商园专业网店货源批发长春seo公司哪家好
  • maryjane动画制作公司网站襄阳seo培训
  • 做网站选择系统关闭站长工具seo综合查询
  • 淘宝运营培训课程靠谱吗网站seo外包公司有哪些
  • 这样做自己的网站发广告去哪个平台
  • 长春网站设计哪家好发布会直播平台
  • wordpress建视频网站属于网络营销的特点是
  • 合肥网站搭建数据推广公司
  • 刚开始做网站布局很吃力 怎么办北京网站优化培训
  • 用aspx做的网站网页设计参考网站
  • 惠阳开发网站建设做网站的网络公司
  • 如何提高一个网站全网营销是什么
  • qifeiye做的网站如何市场推广工作内容
  • 企业网页设计案例什么是seo搜索
  • 温州专业营销网站公司平台关键词排名优化
  • wordpress 过滤词无锡网站建设方案优化
  • 河东做网站公司口碑营销经典案例
  • 县级旅游局网站建设谷歌浏览器下载手机版app
  • 做金融网站看那些素材聚合搜索引擎接口
  • 网站建设及服务合同书潍坊百度关键词优化
  • 网站怎么设计seo关键词排名优化制作
  • phpcmsv9手机网站模板接广告推广的平台
  • 和林格尔网站制作代写文章的平台有哪些
  • 网站分享平台推广电话
  • 教做美食的网站站长之家0
  • 西安做网站哪里便宜站长工具seo综合查询关键词
  • 手机网站怎么做seo青岛网站建设有限公司
  • 做外国网用哪些网站百度推广培训班
  • 网站域名登陆地址昆明seo博客