RESTFul接口设计时,退出登录是使用GET请求还是使用POST请求?

退出登录就是用户注销其在系统中的登录身份(或者说状态),那么在开发的时候这个退出(logout)接口应该定义成什么样的请求类型呢?是GET还是POST?

关于注销登录

在各个系统中对于处理注销登录的机制也大同小异,说到注销登录就不得不说一下登录的机制,登录的机制在早期的后端开发中一般情况下是使用SESSION机制,进行标识一个用户登录状态。时下最流行的前后端分离开发模式,后端程序一般都会使用JWT做为认证机制,不管怎么说吧,这些登录机制就是在系统中进行标识用户登录状态,用户注销登录的时候,请求注销接口携带一个用户唯一标识如用户手机号,后端程序根据这个唯一标识去找到登录时在系统签发的唯一标识(一般存放在Redis这种内存级数据库),将其进行过期或者删除登录标识,这个流程也就完毕了,用户也就退出了系统!

注销接口是该使用GET还是POST

这个问题从安全角度考虑应该使用POST,为什么这么说呢,那就应该从POST请求方式的本质来可虑了,我们都知道它是通过HTTP-Body进行数据携带而不是通过URL,所以应该使用POST请求方式做用户注销接口的定义,那为什么不用GET请求方式做用户注销登录接口的定义呢?原因主要是GET请求浏览器会进行URL缓存操作,所以使用GET请求不够安全!你也可以去验证一下大公司在做用户注销登录的时候,使用什么HTTP请求方式,如:京东淘宝 之类的!

comments powered by Disqus