@@ -65,6 +65,45 @@ public class LoginServiceImpl implements LoginService {
6565 @ Autowired
6666 private JwtProperties jwtProperties ;
6767
68+ @ Override
69+ public ApiResult login (LoginParam loginParam , HttpServletResponse response ) {
70+ String username = loginParam .getUsername ();
71+ // TODO 从数据库中获取登陆用户信息
72+ LoginSysUserVo loginSysUserVo = new LoginSysUserVo ()
73+ .setId (1L )
74+ .setUsername (loginParam .getUsername ())
75+ .setSalt ("666" ) // 可选
76+ .setRoles (SetUtils .hashSet ("admin" ));
77+
78+ if (loginSysUserVo == null ) {
79+ log .error ("登陆失败,loginParam:{}" , loginParam );
80+ return ApiResult .fail (ApiCode .LOGIN_EXCEPTION );
81+ }
82+ // 包装盐值
83+ String newSalt = SaltUtil .getSalt (jwtProperties .getSecret (), loginSysUserVo .getSalt ());
84+ // 删除登陆用户盐值,盐值保存到后台Redis缓存中
85+ loginSysUserVo .setSalt (null );
86+
87+ // 生成token字符串并返回
88+ Duration expireDuration = Duration .ofSeconds (jwtProperties .getExpireSecond ());
89+ String token = JwtUtil .generateToken (username , newSalt , expireDuration );
90+ log .debug ("token:{}" , token );
91+
92+ // 创建AuthenticationToken
93+ JwtToken jwtToken = JwtToken .build (token , username , newSalt , jwtProperties .getExpireSecond ());
94+ // 从SecurityUtils里边创建一个 subject
95+ Subject subject = SecurityUtils .getSubject ();
96+ // 执行认证登陆
97+ subject .login (jwtToken );
98+
99+ // 缓存登陆信息到Redis
100+ loginRedisService .cacheLoginInfo (jwtToken , loginSysUserVo , true );
101+ // 设置响应头
102+ response .setHeader (CommonConstant .JWT_TOKEN_NAME , token );
103+ // 返回token
104+ return ApiResult .ok (token , "登陆成功" );
105+ }
106+
68107 @ Override
69108 public void refreshToken (JwtToken jwtToken , HttpServletResponse httpServletResponse ) {
70109 if (jwtToken == null ) {
@@ -114,45 +153,6 @@ public void refreshToken(JwtToken jwtToken, HttpServletResponse httpServletRespo
114153 httpServletResponse .setHeader (CommonConstant .JWT_TOKEN_NAME , newToken );
115154 }
116155
117- @ Override
118- public ApiResult login (LoginParam loginParam , HttpServletResponse response ) {
119- String username = loginParam .getUsername ();
120- // TODO 从数据库中获取登陆用户信息
121- LoginSysUserVo loginSysUserVo = new LoginSysUserVo ()
122- .setId (1L )
123- .setUsername (loginParam .getUsername ())
124- .setSalt ("666" ) // 可选
125- .setRoles (SetUtils .hashSet ("admin" ));
126-
127- if (loginSysUserVo == null ) {
128- log .error ("登陆失败,loginParam:{}" , loginParam );
129- return ApiResult .fail (ApiCode .LOGIN_EXCEPTION );
130- }
131- // 包装盐值
132- String newSalt = SaltUtil .getSalt (jwtProperties .getSecret (), loginSysUserVo .getSalt ());
133- // 删除登陆用户盐值,盐值保存到后台Redis缓存中
134- loginSysUserVo .setSalt (null );
135-
136- // 生成token字符串并返回
137- Duration expireDuration = Duration .ofSeconds (jwtProperties .getExpireSecond ());
138- String token = JwtUtil .generateToken (username , newSalt , expireDuration );
139- log .debug ("token:{}" , token );
140-
141- // 创建AuthenticationToken
142- JwtToken jwtToken = JwtToken .build (token , username , newSalt , jwtProperties .getExpireSecond ());
143- // 从SecurityUtils里边创建一个 subject
144- Subject subject = SecurityUtils .getSubject ();
145- // 执行认证登陆
146- subject .login (jwtToken );
147-
148- // 缓存登陆信息到Redis
149- loginRedisService .cacheLoginInfo (jwtToken , loginSysUserVo , true );
150- // 设置响应头
151- response .setHeader (CommonConstant .JWT_TOKEN_NAME , token );
152- // 返回token
153- return ApiResult .ok (token , "登陆成功" );
154- }
155-
156156 @ Override
157157 public void logout (String username ) {
158158 log .info ("logout,username:{}" , username );
0 commit comments