`
chun521521
  • 浏览: 281949 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

利用cookie锁定客户端登录

    博客分类:
  • js
阅读更多
流程:首先直接访问jsp,呈现登录页面,填好用户名、密码后,点击登录进行验证。
action验证时若没有登录码,则生成一个。并写进数据库。
页面验证到时候,取到action传递的参数,设置cookie。

java:

ServerUserBean userBean = loginService.login(shopNo, username, password);
if (null == userBean) {
request.setAttribute("flag", "0");
} else {
request.setAttribute("flag", "1");
request.setAttribute("key", key);
String logKey = userBean.getLogKey();
request.setAttribute("logKey", StringUtils.isBlank(logKey) ? "0" : "1");//是否存在登录码
if (StringUtils.isBlank(logKey)) {
String val = RandomUtil.getString(10);
request.setAttribute("val", val);
this.loginService.updLogKey(val, userBean.getShopId());
} else {
request.setAttribute("val", logKey);
}
ActionContext.getContext().getSession().put("shopId", userBean.getShopId());
ActionContext.getContext().getSession().put("shopName", userBean.getShopName());
}



jsp:

<li id="logMsg" style="padding-left: 60px"><font color="red">
<span id="errorMsg"></span>
<%
if("0".equals((String)request.getAttribute("flag"))){
out.print("工号、用户名或密码错误!");
} else if("1".equals((String)request.getAttribute("flag"))){
%>
<script type="text/javascript">
var key = '<%=request.getAttribute("key") %>';
var val = '<%=request.getAttribute("val") %>';
if('<%=request.getAttribute("logKey") %>' == '0'){
SetCookie(key, val);
}

if(val == GetCookie(key)){
window.location = prjContextPath + '/main.do';
} else {
$('errorMsg').innerHTML = '请向代理商索要授权!';
}
</script>
<%
} else if("2".equals((String)request.getAttribute("flag"))){
out.print("请先登录系统!");
}
%>
</font></li>



//**
* 获得Cookie的原始值
* @param name
* @return
*/
function GetCookie(name){
    var arr = document.cookie.split(";");
    for(var m = 0; m < arr.length; m++){
        var temp = arr[m].split("=");
        if(temp[0].replace(" ","") == name){
            return unescape(temp[1]);
        }
    }
}

/**
* 设定Cookie值
* @param name
* @param value
* @return
*/
function SetCookie(name, value){
var expdate = new Date();
expdate.setTime(expdate.getTime() + (30 * 24 * 3600 * 1000));
document.cookie = name + "=" + escape(value) + (";  expires=" + expdate.toGMTString());
}

/**
* 删除Cookie
* @param name
* @return
*/
function DelCookie(name){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = GetCookie(name);
document.cookie = name + "=" + cval + ";  expires=" + exp.toGMTString();
}
分享到:
评论

相关推荐

    C#防用户重复登录的方法.NET

    1. **会话管理**:在用户成功登录后,服务器会创建一个唯一的会话ID,并将其发送给客户端(通常是通过Cookie)。每当用户请求新页面时,都会携带这个会话ID。服务器端检查这个ID来验证用户是否已经登录。如果检测到...

    ASP.NET登录验证模块实现

    如果凭据有效,可以通过`FormsAuthentication`类将用户重定向到登录后的页面,同时设置一个 Forms Authentication ticket,这个ticket包含了用户的身份信息,并通过cookie在客户端保持状态。 为了实现用户认证,ASP...

    简单登录源代码

    5. 会话管理:登录成功后,服务器会生成一个会话ID(Session ID),并将其存储在服务器端或客户端的Cookie中。每次用户请求受保护的页面时,都会通过这个ID来识别用户,维持登录状态。 6. 错误处理:登录系统应处理...

    登录防止重复提交1

    当用户提交登录请求时,服务器生成一个唯一的Session ID,并将其发送给客户端(通常存储在Cookie中)。客户端每次请求时携带这个Session ID,服务器根据ID查找对应的Session数据,从而识别用户身份。为了防止重复...

    BOOT客户管理系统所需jar包

    "BOOT客户管理系统所需jar包"这个标题暗示了这是一个基于Spring Boot的系统,它利用SSM框架来构建客户管理相关的功能。 首先,Spring框架作为核心,提供了一个全面的编程和配置模型,使得开发者能够轻松地创建企业...

    asp的所有内置对象

    2. Cookies管理:利用Response.Cookies添加Cookie,Request.Cookies读取Cookie信息。 3. 在线考试系统:用Form收集答案,服务器端比较答案并计算分数。 4. Session登录系统:在登录页面设置Session,未登录访问特定...

    论坛数据文档

    本文将深入探讨论坛系统的登录逻辑,特别是如何利用`session`与`cookie`进行数据管理。 ##### Session与Cookie的基本概念 - **Session**:服务器端维护的一种机制,用于跟踪用户的会话信息。当用户登录后,服务器会...

    HttpClient 4.0中文教程

    - **消耗实体内容**: 当收到响应时,必须显式地消耗实体内容,否则可能导致连接被锁定。 - **生成实体内容**: 发送请求时,可以使用实体构造器来生成HTTP实体。 - **响应控制器**: 控制器可以用来处理响应逻辑,例如...

    登陆web java j2ee

    Session在客户端通过cookie进行跟踪,确保用户在会话期间保持登录状态。 7. **错误处理**:登录模块应有完善的错误处理机制,如处理无效输入、账户锁定、密码重试限制等。错误信息可以通过JSP显示,帮助用户理解...

    开源项目-alexedwards-scs.zip

    6. **防止会话劫持**:通过验证每次请求的会话ID,SCS能有效地防止恶意用户利用被盗的会话ID登录系统。 7. **会话锁定**:防止多个并发请求同时修改同一会话数据,确保数据一致性。 8. **可扩展性**:SCS设计得...

    application对象

    Request对象用于获取客户端发送的请求信息,Response对象则负责向客户端发送响应,Server对象提供了对服务器功能的访问,而Cookie对象则用来管理HTTP Cookie,用于在客户端和服务器之间传递小量信息。 在Web.config...

    php sql 优化

    - 两者的区别在于存储位置不同,Session 通常存储在服务器端,而 Cookie 存储在客户端。 ### 总结 以上就是关于 PHP 和 SQL 优化方面的一些关键知识点,涵盖了数据库优化策略、版本控制工具的选择以及 PHP 的一些...

    php面试题汇总-121617591

    - Cookie是存储在客户端(浏览器)的一种技术,它可以记录用户的偏好、登录状态等信息。每个Cookie的大小限制约为4KB,且存在数量限制。Cookie的生命周期由服务器设定,但用户也可以手动清除。 3. **数据库中的...

    php面试题及答案

    - **COOKIE**: COOKIE是一种客户端技术,用于存储用户的偏好设置等信息。它将数据存储在客户端浏览器上,因此相对不太安全,但使用起来较为方便。COOKIE可以被用户禁用,这可能会影响依赖于COOKIE的功能。 **3. ...

    2018 BAT最新-php面试必考题(内附答案)

    而cookie是存储在客户端的,通常用来存储不敏感信息,比如用户的登录状态、访问偏好等。 3. 数据库事务的概念 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在事务中,要么所有...

    2011-10-31最新公司应聘面试题目总结

    Cookie存储在客户端,数据可被用户查看和修改,适用于存储非敏感的用户信息,如登录状态。 3. 数据库中的事务: 事务是一组数据库操作,具有原子性、一致性、隔离性和持久性。如果事务中的所有操作都成功,事务...

    php面试测试

    - Cookie:存储在客户端,通常用于存储较小的数据片段,如用户偏好设置,易被篡改。 3. **echo(), print(), print_r()的区别** - echo:PHP语句,快速输出一个或多个字符串,没有返回值。 - print:函数,仅能...

    WEB渗透技术研究与安全防御.docx

    Cookie注入攻击是指攻击者通过修改或替换客户端Cookie中的值来实现攻击的目的。这种攻击通常用于绕过身份验证机制,实现未授权访问。 #### 三、安全防御方案设计 为了有效地防御Web渗透攻击,需要采取一系列措施来...

    Java面试宝典

    6. **利用Cookie实现自动登录** - 在用户登录成功后,服务器可以将用户的登录状态和其他必要信息存储在Cookie中,并设置较长的有效期。 7. **保存session ID的方法** - 通过HTTP头字段。 - 通过URL重写。 - ...

Global site tag (gtag.js) - Google Analytics