|
1
|
package com.huaheng.pc.stompwebsocket;
|
|
2
3
|
import com.huaheng.common.utils.security.ShiroUtils;
|
|
4
|
import com.huaheng.pc.stompwebsocket.service.StompWebSocketServiceImpl;
|
|
5
|
import com.huaheng.pc.system.user.domain.User;
|
|
6
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
7
|
import org.springframework.context.annotation.Lazy;
|
|
8
9
|
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
|
|
10
|
import org.springframework.stereotype.Component;
|
|
11
12
13
|
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
|
|
14
|
import javax.annotation.Resource;
|
|
15
16
|
import java.util.Map;
|
|
17
|
@Component("sessionAuthHandshakeInterceptor")
|
|
18
|
public class SessionAuthHandshakeInterceptor implements HandshakeInterceptor {
|
|
19
|
@Autowired
|
|
20
|
@Lazy
|
|
21
|
private StompWebSocketServiceImpl stompWebSocketService;
|
|
22
23
24
25
26
27
28
29
|
@Override
public boolean beforeHandshake (ServerHttpRequest Request, ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
User user = ShiroUtils.getUser();
if (user == null) {
return false;
}
|
|
30
|
// attributes.put("user ", user.getLoginName());
|
|
31
32
33
34
35
|
return true;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
|
|
36
37
|
User user = ShiroUtils.getUser();
stompWebSocketService.sendOfflineMessageToUser(user.getLoginName());
|
|
38
39
40
41
|
}
}
|