用户身份验证
一句话:确认"这个人是不是他声称的那个人"的过程,通常通过账号密码、验证码或第三方登录实现,是几乎所有需要登录功能的应用的基础。
它是什么
身份验证(Authentication)解决的是"你是谁"的问题,和解决"你能做什么"的权限系统(Authorization)是不同的概念,但经常配合使用。常见方式包括账号密码登录、手机验证码、第三方登录(微信/Google账号登录)等。
适合干什么
- 需要区分不同用户、保护用户数据的应用
- 需要记录用户身份进行个性化服务的场景
不适合干什么
- 完全公开、不需要区分用户身份的静态展示页面
普通人怎么用
现在有不少现成的身份验证服务(如各类BaaS平台自带的Auth功能)可以直接用,不需要从零手写密码加密、Token生成这些底层逻辑,优先选择成熟方案而不是自己造轮子。
进阶用户怎么用
密码必须加密存储(用scrypt/bcrypt这类专门的哈希算法,不能明文或简单加密存),登录凭证(见auth-token/jwt)要设置合理的过期时间;重要操作考虑加二次验证。
常见误区
- 自己实现登录功能时把密码明文存到数据库,一旦数据库泄露所有用户密码直接暴露,必须用专门的哈希算法加密存储
- 以为登录成功了整个会话期间就绝对安全,重要操作(改密码、大额支付)还是要考虑二次验证
和相似工具的区别
- 和权限系统的区别:身份验证解决"你是谁",权限系统解决"你能做什么",登录成功只是第一步,之后还需要权限系统判断能访问哪些内容
入门步骤
- 选择合适的身份验证方式(账号密码/第三方登录/验证码)
- 如果自己实现,确保密码用专门算法加密存储
- 设计好登录状态的维持方式(见auth-token)