常见四种登录方式-面试可聊

248 阅读3分钟

前端常见登录实现方案

Cookie + Session 登录

流程: 登录功能基:于COOkie,用户登录成功一般将登录状态记录到Session中。要实现服务端对客户端登录信息进行验证,需要在客户端保存Session的Id到Cookie中,要求客户端之后每次请求携带它们。当服务端收到请求后验证Cookie信息来判断用户是否登录。

概括:初次登录-用户访问,输入密码登录。服务器验证密码准确,创建SessionId并保存起来。服务端响应HttP请求,通过Set-Cookie头信息,将SessionId写入Cookie中。第一次登录-用户访问会自动带上第一次登录写入的Cookie,服务端验证Cookie中的SessionId和保存到服务器的SessionId一致,如果一致就成功。

问题:对接大量客户端,就会存放大量SessionId,服务器压力过大。无法避免CSRF攻击。会增加维护成本

Token 登录

流程:token是通过服务端生成的一串字符串,以作为客户端请求的一个令牌,第一次登录后,服务器会生成一个Token返回给客户端,客户端后续访问只需带上这个Token就行完成身份认证。

生成方式-token是多种算法拼接组合而成的字符串,常见生成方式是JWT,用于通信双方以JSON对象的形式安全传递信息。JWT算法分为头信息,消息体,签名。

优缺点-服务端不需要存放Token,不会造成压力,token可以存放到前端任何地方,不用保存cookie,安全。在生效期间一直有效,服务端不易收回Token权限。

SSO 单点登录

概念-在同一账号平台下的多个应用系统,用户只需要登陆一次,就可访问所有相互信任的应用系统。本质就是在多个应用系统中共享登陆状态。

流程: 首次访问-首次登录导向认证中心,带上回调地址,登陆后直接进入相应页面。提交账号登录,认证中心验证准确,然后重定向带上授权码Ticket,将认证中心登录态写入Cookie。在服务器中拿着Ticket向认证中心确认。验证成功后将服务器登录信息写入Cookie(客户端有2个Cookie存放登录态)。访问其他页面时因为认证中心存储登陆过的Cookie,不需要重新登录。

父域Cookie- 一般存在作用域限制,无法跨域名传递。cookie作用域由domain和path属性决定,domain属性有效值为当前域或其他父域名/ip地址,如果把domain属性设置为当前域的父域,那么会认为它是父域,因为父域的Cookie被子域共享,子域会自动继承父域的Cookie.利用这个特点-,将Cookie的domain属性设置为父域名,同时将cookie的path属性设置为根路径,所有子域应用就可以访问这个Cookie。

认证中心--专门处理负责处理登录请求的独立WEB服务。

localStorage跨域-如何让SessionId在多个域共享,前后端分离,将Sessionid保存到localStorage中,后端请求前端时,将LocalStorage数据传递给服务端。

OAuth 第三方登录

选择第三方平台,取=去官方文档查找平台接入方式。