李永德
1 year ago
1 changed files with 92 additions and 0 deletions
@ -0,0 +1,92 @@ |
|||
package org.nl.system.controller.secutiry; |
|||
|
|||
import cn.dev33.satoken.annotation.SaIgnore; |
|||
import cn.dev33.satoken.secure.SaSecureUtil; |
|||
import cn.dev33.satoken.stp.SaLoginModel; |
|||
import cn.dev33.satoken.stp.StpUtil; |
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.exception.BadRequestException; |
|||
import org.nl.common.utils.RedisUtils; |
|||
import org.nl.common.utils.RsaUtils; |
|||
import org.nl.common.utils.dto.CurrentUser; |
|||
import org.nl.config.RsaProperties; |
|||
import org.nl.system.service.role.ISysRoleService; |
|||
import org.nl.system.service.secutiry.dto.AuthUserDto; |
|||
import org.nl.system.service.user.ISysUserService; |
|||
import org.nl.system.service.user.dao.SysUser; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 手持登录鉴权 |
|||
* @Date: 2023/7/31 |
|||
*/ |
|||
@Slf4j |
|||
@RestController |
|||
@RequestMapping("/api/pda") |
|||
@Api(tags = "手持:系统授权接口") |
|||
public class MobileAuthorizationController { |
|||
@Autowired |
|||
private ISysUserService userService; |
|||
@Autowired |
|||
private ISysRoleService roleService; |
|||
@ApiOperation("登录授权") |
|||
@PostMapping(value = "/login") |
|||
@SaIgnore |
|||
public JSONObject login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { |
|||
// 密码解密 - 前端的加密规则: encrypt(根据实际更改)
|
|||
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); |
|||
// 校验数据库
|
|||
// 根据用户名查询,在比对密码
|
|||
SysUser userInfo = userService.getOne(new LambdaQueryWrapper<SysUser>() |
|||
.eq(SysUser::getUsername, authUser.getUsername())); // 拿不到已经抛出异常
|
|||
if (!userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密
|
|||
throw new BadRequestException("账号或密码错误!"); |
|||
} |
|||
// 获取权限列表 - 登录查找权限
|
|||
List<String> permissionList = roleService.getPermissionList((JSONObject) JSON.toJSON(userInfo)); |
|||
|
|||
if (!userInfo.getIs_used()) { |
|||
throw new BadRequestException("账号未激活"); |
|||
} |
|||
|
|||
// 登录输入,登出删除
|
|||
CurrentUser user = new CurrentUser(); |
|||
user.setId(userInfo.getUser_id()); |
|||
user.setUsername(userInfo.getUsername()); |
|||
user.setPresonName(userInfo.getPerson_name()); |
|||
user.setUser(userInfo); |
|||
user.setPermissions(permissionList); |
|||
|
|||
// SaLoginModel 配置登录相关参数
|
|||
StpUtil.login(userInfo.getUser_id(), new SaLoginModel() |
|||
.setDevice("PE") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型
|
|||
.setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效)
|
|||
); |
|||
|
|||
// 返回 token 与 用户信息
|
|||
JSONObject jsonObject = new JSONObject(); |
|||
// jsonObject.put("roles", permissionList);
|
|||
jsonObject.put("user", userInfo); |
|||
JSONObject authInfo = new JSONObject(2) {{ |
|||
put("token", "Bearer " + StpUtil.getTokenValue()); |
|||
put("user", jsonObject); |
|||
}}; |
|||
|
|||
return authInfo; |
|||
} |
|||
} |
Loading…
Reference in new issue