Heim  >  Fragen und Antworten  >  Hauptteil

spring - JAVA WEB 授权问题请教。

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

请问这该怎么实现?

PHP中文网PHP中文网2717 Tage vor447

Antworte allen(6)Ich werde antworten

  • 阿神

    阿神2017-04-18 09:58:35

    简单来说 两种

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

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

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

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

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:58:35

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

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

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

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

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-18 09:58:35

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

    Antwort
    0
  • 阿神

    阿神2017-04-18 09:58:35

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

    Antwort
    0
  • 怪我咯

    怪我咯2017-04-18 09:58:35

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

    Antwort
    0
  • 阿神

    阿神2017-04-18 09:58:35

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

    Antwort
    0
  • StornierenAntwort