84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
编写好了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的时效,每次刷新网页是验证一下,这算是比较简便的方法了
没有其他外部证书的情况下,题主的需求与“使用用户名密码登录后记录登录状态一段时间”有什么区别?
谢谢各位的回复,不过不好意思只能采纳一个答案。
简单来说 两种
根据对方机器生成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的时效,每次刷新网页是验证一下,这算是比较简便的方法了
没有其他外部证书的情况下,题主的需求与“使用用户名密码登录后记录登录状态一段时间”有什么区别?
谢谢各位的回复,不过不好意思只能采纳一个答案。