网站登录鉴权的实现

什么是网站鉴权,目的是什么?

一般来说,一个网站不可能只有一种操作权限。举个例子,可能存在未登录的操作权限,登录的操作权限,以及管理
员的操作权限等。网站鉴权的目的就是用户在进行操作前,对用户的身份进行识别并判断其是否具有该操作权限的过
程。

网站鉴权的几种方式

这里我们将问题简单化,即操作权限只区分用户是否进行了登录。

Session方式实现
(1)Session实现鉴权
    1>用户首先进行登录,如登录成功的话,后台会生成一个唯一的sessionId,并在后台存储对应的用户信息
    (redis,数据库等等),并将sessionId写到Cookie。
    2>下次该浏览器访问时,会首先判断Cookie,进而确定该用户是否进行了登录操作。
(2)Session一致性问题
    即需要将在服务器存储的用户信息放在一块儿(同一个redis,mysql等),否则可能出现在一台机器上登录,
    并且在该机器上保存了数据,但下一次请求访问到另一个服务器时,需要重新进行登录的情况。
JWT以及具体实现
(1)JWT鉴权的简单流程
    JWT分为三部分:Header(包含加密方式等),Payload(包含用户必要信息,以及过期时间等),
    Signature(由前两部分生成)。
    1>用户登录成功后,后台根据用户信息加上一个用户唯一的密钥值,生成一串字符串,即Token串,将其设置
    在Cookie中;
    2>用户下次带Token访问,系统会先根据前两部分以及密钥值,对Token进行有效性以及正确性的验证,如果       
    验证通过的话,再执行下一步操作...
(2)关于鉴权时机的思考
    下面提供两种方式,大家可以根据具体的网站需求进行选择:
    1>将接口分为需要进行鉴权的接口(auth),不需要进行鉴权的接口(api),然后通过过滤器对auth接口
    进行统一的处理,即登录进行访问,未登录跳回登录页等等逻辑。
    2>上面做法存在一个问题,就是当接口中出现无法界定的接口,即登录未登录都可以进行访问。那么,按照上
    面的方法就只能对接口进行拆分,分成api和auth接口。
      所以,另一种方式就是索性不使用过滤器进行处理,当需要进行登录才能访问,或无法界定的接口的时
    候,对token进行验证以及获取,再接着进行下面的逻辑处理。
(3)关于Token刷新的问题
    一般Token的有效时间设置为1-2个小时,那么,如果过期之后,就需要重新登录获取Token。为了避免这种
    情况,我们可以为Token设置一个刷新有效时间,只要Token在这个刷新有效时间内,使用旧的Token进行访
    问,就会给它返回一个新的Token。这样,问题就可以解决。
oauth鉴权,了解一下(应用:第三方登录)
oauth简单来说,就是为了解决一个应用(客户端)中为了获取另一个应用(服务提供商)资源,而不需要用户向
客户端提供服务提供商账号密码信息的这样一个问题。客户端与服务提供商之间,有一个应用授权层,客户端携带
Token通过授权层获取服务提供商的资源。

第三方登录就采用的是oauth2进行授权的,这里有通过Go语言实现QQ和Github第三方登录的代码

总结

我们这里只是简单的探讨了下关于鉴权的几种方式,在实际的开发中,由于安全性,以及网站的复杂性,可能会存
在多种不同的用户权限等等,那么,就可能需要对这些方式进行一定的设计和修改。
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值