日期:2014-05-18  浏览次数:20475 次

ASP.NET用户身份认证,授权,在会话周期内保存状态。
众所周知,ASP.NET有四种验证方式:
1.NONE
2.WINDOWS
3.FORMS
4.PASSPORT
关于这四种验证方式不想加以讨论,目前大多数都在使用FORMS验证方式。

身份的认证和授权是B/S开发中必不可少的部分,目前一个有竞争力的公司都会有自己的一套核心产品,这套产品的功能当然实现了对用户身份认证和授权的部分。

我想知道的是:如果你在做一个系统,你的用户集成管理系统(包括认证和授权)是如何设计实现的呢?

本着“通用”的目的,应该有这样一套用户管理方案可以在任何项目中重用。

我的想法是:

数据结构:Users,Roles,UserRoles三张表
设计类:User,Roles这两个类是多对多的关系。

流程:从客户端发起一个请求开始,通过HttpMoudle获得请求信息,进行认证授权。

我的问题是:
数据结构是否合理,不合理应该是怎么样?
类应该有几个,有什么样的关系
认证和授权的细节中,如何持久的保存用户登录状态,授权之后如何通信

求完整的解决方案,至少在概念上应该是完整的。
欢迎大家讨论

------解决方案--------------------
进来学习了
------解决方案--------------------
学习。
------解决方案--------------------
目前我的是这样的:
数据结构:Users,Role,Function,UserRole,RoleFunction五张表
用户对应一个或者多个角色,角色对应一个或者多个权限
------解决方案--------------------
去博客园去看吧,一堆一堆的,这还讨论??库表设计,居然让对项目几乎完全不知情的人给设计,你比较失败~
------解决方案--------------------
TO LZ:
如果你要这么弄,要permissions,RolePermissions,用来保存页面的权限和角色权限信息。

授权就是要保存该用户已验证的信息,要么session,要么cookie。

这种情况比较常见,是对每个页面进行权限控制。但常见不等于通用。
有一句话,对所有场景越通用,对某特定场景的适应性越差。

而且如果要考虑页面内的 权限呢,如页面内有添加,删除,修改等等功能要控制权限,那么就不仅仅要如此了。

------解决方案--------------------
,假如我有200W用户,有1000个角色???

楼主,你不觉得很搞笑吗?
------解决方案--------------------
//本着“通用”的目的,应该有这样一套用户管理方案可以在任何项目中重用。
你这思路是错误的,从来就不存在通用的东西;
通用意味着面面俱到,庞大、复杂、缺乏灵活性、容易出错;
如果真的可以做到通用,微软直接就做出来了,轮不到你;
不同的项目需求(包括身份认证)是千差万别的~
------解决方案--------------------
假如我有200W用户,有1000个角色,那么UserRole中有多少记录?
------------
哪来的1000个角色,一般常用的几个角色就够了,如果是这样,还不如直接用户、权限就好了,就没有必要用角色了
请参考MEMBERSHIP里面的设计,人家再怎么设计,也很难达到人家小微的设计,小微安全性考虑了不少
------解决方案--------------------
用户角色表有4000W条数据,并且还是一个企业?
我个人认为这样的设计,太让人……,难理解了,就是中国一个部级的部门,也不应该有那么多职务角色~
------解决方案--------------------
www.cnblogs.com 去那里找一找吧
------解决方案--------------------
mark一下,呵~
------解决方案--------------------
个人可以给你一个省级的人才网的库表设计,但估计,你改造它的难度相当大~
------解决方案--------------------
目前我所关心的是用户角色权限这个部分,其它不直接相关的数据不考虑在内
----------------------------------------
从职能上先列出有代表特征的,然后再分级抽象~~,正常人都这么作的~,如果你还是能弄出1000个角色,告诉我一声,我好学习一下
------解决方案--------------------
不搞笑,目前某全国最大企业就是这个问题。 
用户角色表有4000W条数据
-------------------------------------------------------

角色表有4000w数据??? -_-!!!
------解决方案--------------------
mark
------解决方案--------------------
4000W?1000个角色??(1K种职业???),让人……
------解决方案--------------------
目前我的也是这样的: 
数据结构:Users,Role,Function,UserRole,RoleFunction五张表 
用户对应一个或者多个角色,角色对应一个或者多个权限
------解决方案--------------------
进来学习了
------解决方案--------------------
学习 学习 再学习
------解决方案--------------------
按楼上那样也是一组角色啊,属于子级管理员
只是按等级分为了几个等级的角色
不会存在 1K+的角色的
最多在用户表里添加个对应的管理单元列
------解决方案--------------------
什么是角色???我认为你所认为的角色就是用户。
RBAC权限验证,很不错。
http://www.cnblogs.com/Wenzy/archive/2006/09/22/508666.html
------解决方案--------------------
学习,不断学习中...
------解决方案--------------------
学习!
------解决方案--------------------
学习
------解决方案--------------------
http://tech.ddvip.com/2008-01/120138480041599.html
h