问题
跨域问题,session无法进行同步,可以通过保存session和sessionid的方式进行校验,向前端传送sessionid,前端可以通过头部传sessionid,通过sessionid获取相关的信息,进行校验等操作
1、创建一个类用于保存session
对session进行添加,删除,查询
/**
* 自定义获取指定sessionid的session
*/
public class mysessioncontext {
private static mysessioncontext instance;
private hashmap mymap;
private mysessioncontext() {
mymap = new hashmap();
}
/**
* 创建mysessioncontext的对象
* @return
*/
public static mysessioncontext getinstance() {
if (instance == null) {
instance = new mysessioncontext();
}
return instance;
}
/**
* 添加session
* @param session
*/
public synchronized void addsession(httpsession session) {
if (session != null) {
mymap.put(session.getid(), session);
}
}
/**
* 删除session
* @param session
*/
public synchronized void delsession(httpsession session) {
if (session != null) {
mymap.remove(session.getid());
}
}
/**
* 查询session
* @param session_id
* @return
*/
public synchronized httpsession getsession(string session_id) {
if (session_id == null) {
return null;
}
return (httpsession) mymap.get(session_id);
}
}
2、建立一个监听器
监听session的创建和销毁
/**
* 监听器来监控session的创建销毁
*/
@weblistener
public class sessionlistener implements httpsessionlistener {
private mysessioncontext myc = mysessioncontext.getinstance();
@override
public void sessioncreated(httpsessionevent httpsessionevent) {
myc.addsession(httpsessionevent.getsession());
}
@override
public void sessiondestroyed(httpsessionevent httpsessionevent) {
httpsession session = httpsessionevent.getsession();
myc.delsession(session);
}
}
3、在启动类上添加注解
@servletcomponentscan用于扫描到sessionlistener
@springbootapplication
@servletcomponentscan
public class runmain{
public static void main(string[] args) {
springapplication.run(runmain.class, args);
}
}
操作代码
//创建mysessioncontext对象 mysessioncontext mycontext = mysessioncontext.getinstance(); //存储session mycontext.addsession(session); //根据sessionid获取session httpsession httpsession = mycontext.getsession(sessionid); //删除session mycontext.delsession(session);
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论