“打仗城市户口先上”我的实践记录
事情是这样的,最近公司想搞个新项目,需要快速上线一个用户管理系统。时间紧任务重,老板直接拍板,谁能搞定谁就升职加薪。我一听,这不就是个机会吗?立马撸起袖子,准备大干一场。
我得先调研一下,看看现在市面上都有啥成熟的方案。花半天时间,把各种用户管理系统都研究个遍,包括 Sa-Token、Spring Security、Apache Shiro,还有一些云厂商提供的身份认证服务。
Sa-Token 看着挺轻量级的,上手快,但是功能感觉不太够。
Spring Security 功能强大,但是配置太繁琐,学习成本有点高。
Apache Shiro 历史悠久,但感觉有点老旧。
我决定用 Spring Security,虽然配置麻烦点,但是功能确实强大,扩展性也以后万一业务复杂,也能Hold住。
接下来就是搭建环境。我新建一个 Spring Boot 项目,引入 Spring Security 的依赖。然后开始写配置类,这部分真是痛苦,各种注解,各种配置,稍微写错一点就启动不。
我按照官方文档,一步一步地配置用户认证、权限控制、CSRF 防护等等。遇到不懂的就 Google,Stack Overflow 简直是我的救星。
配置完之后,开始写 Controller 和 Service。我先把用户注册、登录、注销的功能写这部分比较简单,就是CRUD,没什么难度。
然后是权限控制,这部分比较麻烦。我需要根据用户的角色,来控制他们可以访问的接口。我使用 Spring Security 提供的 `@PreAuthorize` 注解,在每个接口上都加上权限判断。
为方便测试,我创建几个测试用户,包括管理员、普通用户等等。然后用 Postman 模拟各种请求,测试权限控制是否生效。
测试过程中,发现不少问题。比如,有些接口没有加权限判断,导致普通用户也能访问。还有些接口的权限判断写错,导致管理员无法访问。
我花大量时间来调试这些问题,一遍遍地修改配置,一遍遍地测试。总算是把所有问题都解决。
系统上线后,运行一段时间,没有发现什么大的问题。老板对我的工作非常满意,直接给我升职加薪。
这回实践让我受益匪浅。我不仅学会 Spring Security 的使用,还提高解决问题的能力。更重要的是,我明白“打仗城市户口先上”的道理,机会总是留给有准备的人。