从服务器角度怎么才能判断来访客户的唯一性呢?
已知的一些方法:
一、MAC判断,公网上要获取客户端网卡MAC可不是件容易事,而且受路由等环境影响,准确率是有一定问题的;
二、ActiveX方式获取客户端硬件信息,这个因为在用户看来总是貌似很危险的东东,所以不是很受欢迎;
三、向客户端cookie中写标识,类似为每个访问者建个GUID,这个也因为一些不可控的原因(如用户禁用cookie或用户随时删除cookie等),变得不是很有效;
四、综合判断用户机器名、操作系统、浏览器等信息,这个方式最大的问题就是相似的客户端太多啦,准确性也是有问题的;
五、IP判断,这个在公网上基本不用考虑了
//生成cookie
String token = UUIDUtil.uuid();
addCookie(response, token, user);
return token;
public void addCookie(HttpServletResponse response,String token,MiaoshaUser user){
//生成Cookie
redisService.set(MiaoshaUserKey.token,token,user);
Cookie cookie = new Cookie(COOKI_NAME_TOKEN,token);
cookie.setMaxAge(MiaoshaUserKey.token.expireSeconds());
cookie.setPath("/");
response.addCookie(cookie);
}
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。
单例模式
public class Singleton {
private Singleton() {}
private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonInstance.INSTANCE;
}
}
public class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。