扫码关注官方订阅号
编写好了JAVA WEB,想像桌面软件那样,第一次使用的时候需要输入一个key,验证通过则能使用整个系统,否则就无法访问任何页面。
key可以包含授权使用时长,比如1个月。
没有输入正确的key,则无论访问什么url路径,都会跳转到输入key的页面(和用户的登录页面一样)
请问这该怎么实现?
认证0级讲师
简单来说 两种
根据对方机器生成key。
就是你自己实现一种加密方式。(摘要算法之类的不需要反解的算法就行) 然后获取项目部署那台电脑几个主要硬件的mac地址,如主板网卡硬盘之类的,项目内用这些数据计算出一个值,和用户填入的key比较相同就启动正式项目,不同就提示请填入key。 至于如何获取对方硬件信息,就随意了,比如直接让部署项目的同志给你发回来然后,你用那个算计算一个key 发回去。
mac地址
你自己生成一个key到处发放。
比如再建一个web服务,用这台机器生成一批UUID发放出去,然后项目启动后,先请求一次这个服务器进行,服务器进行校验,判断key存不存在,用过没有,发来用过的key的机器和第一次激活是同一台机器么。(一样用不可逆的算法就行) 或者更简单,搞一种伪随机算法(可逆的算法),根据种子可以算出一批key,每个key都可以反解出这个种子。 项目启动时解密输入的key,判断是不是那个种子。
UUID
前提是你已经通过其他方式把这个key给了客户.
key
校验访问是否非法通过cookie判断是否已经登陆,如果验证比较严谨,你这种按授权来的也可以加些ip地址,mac地址之类的强校验,毕竟你客户群很可能不是普通大众.
cookie
ip
mac
授权使用时长,你说的是按一个月算的,也有可能有高级点的客户按半年算的,所以这个是生成时候决定的. 可以使用redis存储你的这个key,可以设置过期时间,每次访问从cookie取key(多数是要加密的),根据key可以去redis取授权剩余时间.
redis
对于校验key失败访问任何一个页面都要跳回输入key的页面.问题带了springmvc标签,那你应该知道请求都是被拦截然后处理完再跳转的,你应该是有思路的.
springmvc
不知道你的key和用户是怎么绑定的。应当是以用户的唯一标识。可以把匹配的用户的唯一标识和key存入数据库或缓存里,以此来判断用户是否有权限。至于页面跳转搞个filter就够了。
可以登录成功后生成一个秘钥 存入cookie 并且设置cookie的时效,每次刷新网页是验证一下,这算是比较简便的方法了
没有其他外部证书的情况下,题主的需求与“使用用户名密码登录后记录登录状态一段时间”有什么区别?
谢谢各位的回复,不过不好意思只能采纳一个答案。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
简单来说 两种
根据对方机器生成key。
就是你自己实现一种加密方式。(摘要算法之类的不需要反解的算法就行)
然后获取项目部署那台电脑几个主要硬件的
mac地址,如主板网卡硬盘之类的,项目内用这些数据计算出一个值,和用户填入的key比较相同就启动正式项目,不同就提示请填入key。至于如何获取对方硬件信息,就随意了,比如直接让部署项目的同志给你发回来然后,你用那个算计算一个key 发回去。
你自己生成一个key到处发放。
比如再建一个web服务,用这台机器生成一批
UUID发放出去,然后项目启动后,先请求一次这个服务器进行,服务器进行校验,判断key存不存在,用过没有,发来用过的key的机器和第一次激活是同一台机器么。(一样用不可逆的算法就行)或者更简单,搞一种伪随机算法(可逆的算法),根据种子可以算出一批key,每个key都可以反解出这个种子。
项目启动时解密输入的key,判断是不是那个种子。
前提是你已经通过其他方式把这个
key给了客户.校验访问是否非法通过
cookie判断是否已经登陆,如果验证比较严谨,你这种按授权来的也可以加些ip地址,mac地址之类的强校验,毕竟你客户群很可能不是普通大众.授权使用时长,你说的是按一个月算的,也有可能有高级点的客户按半年算的,所以这个是生成时候决定的.
可以使用
redis存储你的这个key,可以设置过期时间,每次访问从cookie取key(多数是要加密的),根据key可以去redis取授权剩余时间.对于校验key失败访问任何一个页面都要跳回输入key的页面.问题带了
springmvc标签,那你应该知道请求都是被拦截然后处理完再跳转的,你应该是有思路的.不知道你的key和用户是怎么绑定的。应当是以用户的唯一标识。可以把匹配的用户的唯一标识和key存入数据库或缓存里,以此来判断用户是否有权限。至于页面跳转搞个filter就够了。
可以登录成功后生成一个秘钥 存入cookie 并且设置cookie的时效,每次刷新网页是验证一下,这算是比较简便的方法了
没有其他外部证书的情况下,题主的需求与“使用用户名密码登录后记录登录状态一段时间”有什么区别?
谢谢各位的回复,不过不好意思只能采纳一个答案。