网站自动登录功能的设计[转]

news/2024/5/14 0:03:37/文章来源:https://blog.csdn.net/weixin_34191845/article/details/94218715

     网站的自动登录一直都是有利于提高用户体验的功能,如果设计不好,也非常容易泄漏用户的账户信息。

        比较常见的功能实现方案是将用户的登录信息保存在浏览器的Cookie中。看到一些设计有缺陷的网站会将用户的用户名和密码信息保存在Cookie中,这种做法是相当危险的。虽然这样的设计比较简单,功能比较容易实现,但是却大大提高了泄露用户账户信息的几率,即使保存的用户密码等信息都是经过加密的,但也是不可取的,毕竟现在弱一点的密码加密后也是可以解密的。

        当然自动登录的功能设计必须要在浏览器的Cookie中保留账户的登录凭证(token),这个登录凭证是被当作用户登录的登录钥匙。用户在登录时,凭借浏览器发送的token与服务器端保存的token做比较,若2个token一致,则通过验证,若不一致,则验证失败。

        

        token的产生最好具有一定的随机性,可以加入日期,随机数等等,然后通过一些不可逆的算法加密,如:

 

?
1
String token = Utils.MD5(user.getUsername() + System.currentTimeMillis());

 

 

        样token就不会泄露用户的信息,安全性上得到了保证。token产生后,先将其保存到数据库中,用于以后的验证,接着将其发送给浏览器,保存在客户端的Cookie中。参考代码如下,这里Cookie的有效设置为10天,也就说10后,这个Cookie就会失效:

 

?
1
2
3
4
Cookie cookieToken = new Cookie("token", token);
cookieToken.setMaxAge(10 * 24 * 60 * 60);   // 10 days
cookieToken.setPath("/");
response.addCookie(cookieToken);

        

        当用户登录我们的网站后,到浏览器中查看Cookie信息,就会发现有token的记录:


 

 

        此时token的值就是上面代码中经过MD5加密的值,作用域名为我们的网站域名(这里是测试环境,所以此处的域名是localhost),有效路径为/,即根目录,有效期到2013年12月27号。

        根据浏览器管理Cookie的机制,当用户退出登录后再次浏览我们的网站时,浏览器在向服务器发送URL的同时,依旧会带上Cookie的信息,如下图中所示:


 

 

        下面是在Spring MVC框架下用户请求登录页面的实现代码(此处的功能应该加在检测是否登录的Filter中,因为用户的每次请求都会验证用户是否登录,若未登录,即可在验证token,通过token来实现自动登录):

 

 

?
1
2
3
4
5
6
7
8
9
10
11
12
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(@CookieValue(value="token", required=false) String token) {
    if (!StringUtils.isEmpty(token)) {
        if (this.userService.checkToken(token)) {
            updateCookie();             // 刷新token
            createSession();                // 创建Session
            return "redirect:/user/list";
        }
    }
    return "admin/login";
         
}

 

        浏览器在请求登录界面的时候,会带上token,这时候服务器端的程序会拿到这个token,如果token存在且不为空,会将它与存放在数据库中的token进行比较,若一致,则通过验证,登录成功;若不一致,则登录失败。

        验证成功: 更新token,也就说一个token只能登录验证一次,验证成功后,就会更换新的token

        验证失败: 跳转到登录页面 

        对于大部分的网站来说,这样的设计基本上能够保证用户的账户安全,若要求安全性再高一点,可以同时加入对访问ip的验证,这样验证机制就是token + ip双重验。不足之处就是ip获取的准确性不够,若用户之前使用了代理访问,那么前后ip就出现了不一致,无法自动登录。

转载于:https://www.cnblogs.com/jessica2015/p/4660757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_703622.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...

我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下: import urllib.request def getHtml(url): html urllib.request.urlopen(url).read…

如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...

我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下: import urllib.request def getHtml(url): html urllib.request.urlopen(url).read…

自学python推荐书籍同时找哪些来实践-Python学习路上有这些论坛、网站、书籍与你同行...

Python学习路上有这些论坛、网站、书籍与你同行 2019-05-03 18:24:41 613点赞 9508收藏 164评论 创作立场声明:希望我的一些经验可以给你少走一些弯路,但人总得走点弯路才可以成长。别怕,在学习python的路上有我陪着你。人生苦短,…

怎么在python下载网站内容-分析某网站,并利用python自动登陆该网站,下载网站内容...

本帖最后由 愤怒的小车 于 2019-5-8 09:41 编辑 一:本代码是我研究了好久才写出来,七功能主要有自动登陆、自动识别验证码、以及自动识别下载格式进行判断下载! 首先,搬上我们的主角网址,http://lavteam.org/&#xff…

python爬虫怎么爬同一个网站的多页数据-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面…

白帽社区“乌云”已超9小时无法访问 公告称网站服务升级

7月20日,国内知名白帽子社区“乌云”(http://www.wooyun.org/)今日已无法正常访问,网站挂出公告称“进行升级”。 7月19日晚间23点,微博“互联网的那件事”曝出乌云官方网站显示无法访问。由此算来,截至发稿…

网站发布

转载于:https://www.cnblogs.com/defineconst/p/6380324.html

增长黑盒:零代码基础做智能电商网站,不要重复发明轮子

增长黑盒:零代码基础做智能电商网站 Step0,不破不立,走上增长黑客之路 很多卖货的人最大的问题就是整个团队没有一个懂代码的,更不懂电商网站制作。此时贸然出去外包一个电商网站,问题可能会越来越多。 《增长黑客》中…

【校园先行者】曲径通幽,我用阿里云部署的个人网站及挂机实践分享

未见意趣,必不乐学。目前大二的田程,出于对软件编程的爱好用ECS云服务器部署了一个个人网站。最初使用虚拟机服务的他,认为阿里云服务器的高性价比、丰富的云市场以及详备的售后完美满足了个人需求。 项目初衷 我叫田程,是四川理工…

借助URLOS快速安装python3网站环境

环境需求 1. 最低硬件配置:1核CPU,1G内存(11)提示:如果你的应用较多,而主机节点的硬件配置较低,建议在部署节点时开通虚拟虚拟内存;2. 生产环境建议使用2G或以上内存;3. …

免费猪八戒网站软件任务小助手--小八戒更新版本1.5

前段时间猪八戒网站改版了,我把小八戒也更新了一下,以适应他们新的版面。 界面还是那样,没有做其它的更改。其实本来打算做出来2.0之后再发布的,但是因为这段时间太忙,没有时间去开发2.0,就先把1.5放出来了…

Docker部署网站之后映射域名

Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下。这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网站信息,而不是打开域名之后,还得加个blog后缀才能访问到我们的网站首页。 Docker exec -it…

如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...

我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下: import urllib.request def getHtml(url): html urllib.request.urlopen(url).read…

如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...

我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下: import urllib.request def getHtml(url): html urllib.request.urlopen(url).read…

CentOS LAMP一键安装网站环境及添加域名

一般的VPS用户普遍使用一键安装包和WEB管理面板居多,在一键安装包中,使用LAMP和LNMP的普遍居多。 第一个版本的LAMP环境包安装过程以及建站过程分享出来。 第一、LAMP一键包环境的安装 目前这个环境包是 wget http://soft.laozuo.org/lamp/lamp_centos1.…

网站入口页双栏对称布局实现思路

先来一张预览图。 接下来说一说这种页面布局的实现思路,因为自己是从零开始的,所以着实花了好几天功夫才实现了这么一个看起来很简单的布局,所有东西都要自己一点点摸索,不过这种经历对于自己的成长也是很有帮助的。好了&#xff…

使用php与mysql构建我们的网站

技术这个玩意就是要不断的去使用,才能够熟能生巧。今天我记录的使用php与mysql构建我们的网站,其实是我两年前的时候写的项目。 现在看看自己以前写的个人项目,也会感叹时间究竟带走了什么?好记性不如烂笔头,常写常练&…

自学python推荐书籍同时找哪些来实践-Python学习路上有这些论坛、网站、书籍与你同行...

Python学习路上有这些论坛、网站、书籍与你同行 2019-05-03 18:24:41 613点赞 9508收藏 164评论 创作立场声明:希望我的一些经验可以给你少走一些弯路,但人总得走点弯路才可以成长。别怕,在学习python的路上有我陪着你。人生苦短,…

学习编程可以参考哪些网站?

1、Free Online Course Materialshttps://ocw.mit.edu/index.htm免费的麻省理工学院课程,有各种视频讲座、笔记和资源。2、codecademyhttps://www.codecademy.com/catalog/subject/web-development非常有名的学习代码的网站,对于计算机科学家、web开发人…

怎么在python下载网站内容-分析某网站,并利用python自动登陆该网站,下载网站内容...

本帖最后由 愤怒的小车 于 2019-5-8 09:41 编辑 一:本代码是我研究了好久才写出来,七功能主要有自动登陆、自动识别验证码、以及自动识别下载格式进行判断下载! 首先,搬上我们的主角网址,http://lavteam.org/&#xff…