JAVA WEB 授权问题请教。

编写好了JAVA WEB,想像桌面软件那样,第一次使用的时候需要输入一个key,验证通过则能使用整个系统,否则就无法访问任何页面。

  • key可以包含授权使用时长,比如1个月。

  • 没有输入正确的key,则无论访问什么url路径,都会跳转到输入key的页面(和用户的登录页面一样)

请问这该怎么实现?

简单来说 两种

  1. 根据对方机器生成key。

    就是你自己实现一种加密方式。(摘要算法之类的不需要反解的算法就行)
    然后获取项目部署那台电脑几个主要硬件的mac地址,如主板网卡硬盘之类的,项目内用这些数据计算出一个值,和用户填入的key比较相同就启动正式项目,不同就提示请填入key。
    至于如何获取对方硬件信息,就随意了,比如直接让部署项目的同志给你发回来然后,你用那个算计算一个key 发回去。

  2. 你自己生成一个key到处发放。

    比如再建一个web服务,用这台机器生成一批UUID发放出去,然后项目启动后,先请求一次这个服务器进行,服务器进行校验,判断key存不存在,用过没有,发来用过的key的机器和第一次激活是同一台机器么。(一样用不可逆的算法就行)
    或者更简单,搞一种伪随机算法(可逆的算法),根据种子可以算出一批key,每个key都可以反解出这个种子。
    项目启动时解密输入的key,判断是不是那个种子。

  • 前提是你已经通过其他方式把这个key给了客户.

  • 校验访问是否非法通过cookie判断是否已经登陆,如果验证比较严谨,你这种按授权来的也可以加些ip地址,mac地址之类的强校验,毕竟你客户群很可能不是普通大众.

  • 授权使用时长,你说的是按一个月算的,也有可能有高级点的客户按半年算的,所以这个是生成时候决定的.
    可以使用redis存储你的这个key,可以设置过期时间,每次访问从cookiekey多数是要加密的,根据key可以去redis取授权剩余时间.

  • 对于校验key失败访问任何一个页面都要跳回输入key的页面.问题带了springmvc标签,那你应该知道请求都是被拦截然后处理完再跳转的,你应该是有思路的.

不知道你的key和用户是怎么绑定的。应当是以用户的唯一标识。可以把匹配的用户的唯一标识和key存入数据库或缓存里,以此来判断用户是否有权限。至于页面跳转搞个filter就够了。

可以登录成功后生成一个秘钥 存入cookie 并且设置cookie的时效,每次刷新网页是验证一下,这算是比较简便的方法了

没有其他外部证书的情况下,题主的需求与“使用用户名密码登录后记录登录状态一段时间”有什么区别?

谢谢各位的回复,不过不好意思只能采纳一个答案。

发表评论

电子邮件地址不会被公开。 必填项已用*标注