app登陆流程

请求参数:

@NotBlank(message="手机号不能为空")
private String mobile;
	
//@NotBlank(message="机器码不能为空")
private String devicesn;
	
@NotBlank(message="密码不能为空")
private String pwd;

1 通过手机号查询用户信息:

if(查到用户为空 || 密码不相等){

    抛出用户名和密码不正确

2 判断改用户是否被禁用

3 set最后登陆时间

4 通过机器码查询型号

5 set随机数token

6 保存

7 通过用户id查询用户信息

8 判断会员是否过期

9 判断是否可观看

10 返回用户信息

 

### uni-app 实现 Spring 登录接口集成教程 #### 一、技术背景概述 uni-app 是一种跨平台开发框架,能够通过一次编码实现多个平台的应用构建。在实际项目中,通常需要与后端服务进行交互,完成诸如用户登录等功能。本案例中的后端采用了 Spring Boot 和 Spring Security 构建的服务[^1]。 --- #### 二、具体实现流程 ##### 1. **前端准备** 在 uni-app 中,可以通过 `wx.login` 方法获取用户的临时登录凭证(code),并通过 HTTP 请求将其发送至后端服务器验证身份。以下是具体的代码示例: ```javascript // 前端 login.js 文件 export function loginAction() { wx.login({ success(res) { if (res.code) { // 发送 code 至后端 uni.request({ url: 'http://localhost:8082/login', // 后端 API 地址 method: 'POST', data: { code: res.code }, success(response) { const token = response.data.token; // 存储 Token 到本地存储 uni.setStorageSync('Authorization', token); console.log('Token 获取成功:', token); }, fail(error) { console.error('登录失败:', error); } }); } else { console.error('无法获取登录码'); } } }); } ``` 此部分实现了从小程序调用微信登录接口的功能,并将返回的 `code` 提交给后端处理[^4]。 --- ##### 2. **后端逻辑** ###### (1)接收 Code 参数 后端需提供一个 `/login` 接口用于接收来自小程序的 `code` 数据。Spring Boot 控制器可以这样定义: ```java @RestController @RequestMapping("/auth") public class AuthController { @PostMapping("/login") public ResponseEntity<Map<String, String>> login(@RequestParam String code) throws Exception { Map<String, Object> result = new HashMap<>(); try { // 调用微信官方接口换取 openid 和 session_key String wechatUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=YOUR_APP_ID&secret=YOUR_SECRET_KEY&js_code=" + code + "&grant_type=authorization_code"; RestTemplate restTemplate = new RestTemplate(); String jsonResponse = restTemplate.getForObject(wechatUrl, String.class); JSONObject jsonObject = new JSONObject(jsonResponse); String openId = jsonObject.getString("openid"); String sessionKey = jsonObject.getString("session_key"); // 验证 openid 是否存在并生成 JWT Token String jwtToken = JwtUtil.generateToken(openId); result.put("token", jwtToken); return ResponseEntity.ok(result); } catch (Exception e) { result.put("error", "Invalid code or other errors."); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result); } } } ``` 在此段代码中,后端负责解析微信提供的 `code` 并交换为 `openId` 和 `session_key`,随后利用这些信息签发 JSON Web Token (JWT)[^4]。 --- ##### 3. **安全机制配置** 为了保护敏感资源免受未授权访问的影响,在 Spring Security 中应启用基于角色的安全策略。下面是一个简单的配置实例: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/auth/**").permitAll() // 放开 /auth 下的所有路径供外部调用 .anyRequest().authenticated(); // 其他请求均需认证 // 添加 JWT 过滤器 http.addFilterBefore(new JwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } ``` 上述片段展示了如何开放特定 URL 给公众访问以及强制其他操作必须经过身份验证的过程[^1]。 --- ##### 4. **测试与调试** 最后一步是对整体链路进行全面测试,确保从前端触发登录动作到最后成功写入 Storage 的每一个环节都能正常运作。推荐使用 Postman 或者类似的工具模拟真实环境下的网络通信行为。 --- ### 总结 综上所述,通过结合 uni-app 客户端技术和强大的 Spring 生态体系,开发者不仅可以在短时间内搭建起具备现代化特性的移动应用原型,还能轻松融入企业级安全性考量之中[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员雪球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值