权限系统 / 登录 / 身份验证 (注册、账号、角色、用户组)

创建时间:
2014-04-27 21:45
最近更新:
2018-07-14 12:08

Keywords

  • Authorization (n. 授权) & Authentication (n. 身份验证)
  • login/logon/登录/登入 & logout/退出/注销/登出
  • UAMS (Unified Account Management System, 统一账号管理系统)
  • grant

根本 - 网摘

权限系统理解透彻了很简单的,就是用户和资源!你的页面也好,输入框或者按钮也罢,甚至列表里面的一行或一列,都可以理解为资源。然后,不就是A可以访问某个页面而B不可以,C可以录入数据而D只能看么?所以说:权限就是用户使用资源的规则

在这个规则里面,根本性的数据只有用户和资源,但因为用户太多,不方便授权操作,所以引入了角色、用户组、组织机构等等。通过角色进行授权,又通过用户组、职位这些关联用户可以大大减少具体的授权操作工作量。所以一个完善的权限系统,是必然要包含这些的。

-- 如何设计网站权限系统

登录是个复杂的工程

我心里很自然地想到这是很典型的 "想当然简单" 的态度,我想我得让他认识到这个问题的复杂程度,我反问道:"需要登录吗?"

王总稍作停顿后,说:"那当然。"

"什么登录?用户名密码方式,还是手机登录,抑或像 QQ,微博,微信这种可以借用的第三方登录?"

王总这回似乎想了一下:"作为移动互联网,我想手机登录肯定是要的,QQ,微博,对了,微信,微信最好也要……哦,你前面说用户名密码,这个应该也是要的吧。"

我很流利地接着问:"那总得有注册,如果你打算用手机登录,那得找个短信平台,还有微信登录,你得先做好企业身份认证,对了,有登录,有密码,那密码找回功能也得有吧。"

"这是肯定的。"

"同时有多种登录途径,你必须要想出一种合理的逻辑来将它们 '整合',最常见的当然是账号绑定,例如给你的账号绑定手机号码,这样就能用手机号来登录同样一个账号,对微信登录也同理,但如今移动互联网的用户们都挺厌恶注册流程的,所以往往会要求直接手机登录或者直接微信登录,自动完成注册过程,那考虑这种情况,如果用户先用微信登录,然后再用手机登录,而不是绑定,那么就会产生两个不同的账号,而且无法将其再 '整合' 起来,我们得想出一套比较完善的方案……"

-- 搞个这样的 APP 要多久?

登录流程设计 (未完成、备份)

如已登录,则转向用户中心,并弹窗提示“您已登录”。

如未登录,则显示登录页面。

在登录页面有2个选择:
使用Email登录
使用密码登录

使用Email登录的流程如下:
提交Email
INSERT TestEmailAddress
Sent email of TestEmail(链接主要内容:Email+RandomPassword)
转到 提交成功页面,提示已发送登录邮件,显示相关邮箱链接。

用户在邮箱中点击登录链接,请求 LoginFromEmail Action,如果:
SELECT TimeOfIst FROM TestEmailAddress WHERE(Email=@Email)AND(Pw=@Pw)
有记录,且 TimeOfIst 不超过 24 小时,

核对此 Email 在 User 表中是否存在:不存在则 INSERT User。
为此 User 登录,存入 cookie, session, INSERT LoginLogOfUser。

网摘 - TODO

只需邮箱、无需注册、无需密码 - 示例网站

http://www.keybr.com/account - Sign-In with E-mail: Plain and simple sign‑in that does not use passwords. Just give us your e‑mail address and we will send you a link to login. Click it and you are here as a registered user. If you want to sign‑in on another computer, open the same e‑mail message and click the same link again. Enter the same address and we will re-send the login link to you, as many times as needed. The link is permanent and never changes, so keep it secret. 译: 输入邮箱,接收登录链接,无需密码。该链接永久不变,注意保密。该链接可重复获取。Note: 2018-07-14 已用 bdtgdh@foxmail.com 注册。

2018-07-14 登录邮件备份:

Subject:  Login link for keybr.com
Date:  Sat, Jul 14, 2018 11:51 AM
From:  "keybr.com typing lessons"<k@keybr.com>; (由 bounce+bf11cf.e1fc22-bdtgdh=foxmail.com@mg.keybr.com 代发)
To:  "Tony"<bdtgdh@foxmail.com>;
--
Hello keybr.com user!

Here is the link to log you in into the web-site: https://www.keybr.com/login/7cIbz7r2nI

Please keep this link secret and don't share it with anybody!

Keep this message in you inbox to be able to log in anytime later. However, we can re-send this message again.

Happy typing!

Resource

  1. 使用 AngularJS & NodeJS 实现基于 token 的认证应用
  1. 你会做 Web 上的用户登录功能吗
  2. 领域驱动设计实战 - 基于 DDDLite 的权限管理 - 开源
  3. 权限系统 - 参考 - ASP.NET MVC4 打造一套 UI 与后台并重 - 通用权限系统快速开发框架 + 精美 UI 界面 秒杀 EasyUi、Ext
  4. 我的权限系统设计实现 MVC4 + WebAPI + EasyUI + Knockout (一)
  5. 我的权限系统设计实现 MVC4 + WebAPI + EasyUI + Knockout (二)
  6. 登录流程设计 - 无密码
  7. 设计一个可扩展的用户登录系统
  8. 让用户在输入密码时看到明文吧
  9. 让用户在输入密码时看到明文吧
  10. 统一用户管理系统 - 用户、角色、组织机构 统一化管理
  11. 权限管理、数据权限、跨平台权限管理讲解