whyclxw
2024-01-12 d65d91b52aa4b676e7756c44d0a2e0cfb79d7c76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.whyc.service;
 
import com.whyc.dto.Response;
import com.whyc.pojo.DocUser;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Service;
 
import javax.servlet.http.HttpSession;
 
@Service
public class LoginService {
 
    public Response checkUserWebSocket(HttpSession httpSession){
        Response model = new Response();
        try {
            DocUser user = (DocUser) httpSession.getAttribute("user");
            //System.out.println("webSocket:"+user);
            if(user!=null){
                String sessionId = (String) httpSession.getServletContext().getAttribute(user.getName());
                if(httpSession.getId().equals(sessionId)){
                    model.set(1,user,null);
                }else{
                    model.set(1,false,"不同主机登录");
                    //用户在其他主机登录,强迫用户在本机的session失效
                    httpSession.invalidate();
                }
            }
            else {
                model.set(1,false,"用户信息失效,请重新登录");
            }
 
        }catch (Exception e){
            model.set(1,false,"登录信息失效,重新登录");
        }
        return model;
    }
 
    public void logout() {
        Subject subject = SecurityUtils.getSubject();
        subject.logout();
    }
}