Web用户与权限管理
1. 身份验证(authentication):即确定访问网站的用户身份,解决“用户是谁”的问题;
2. 使用权限(authorization):即在用户身份确定之后,授予他一定的权限,允许他使用特定的服务,这是解决“用户能干什么”的问题。
ASP.NET身份验证方式
asp.net应用程序可以使用以下四种身份验证方式
身份验证方式 | 说明 |
None | 不能进行身份验证,Web站点向所有人开放 |
Windows | 基于windows身份验证,使用用户登录windows的账户作 为Web站点的用户。由于用户在访问网站前已经登录了 windows,所以他访问网站时不再需要输入用户与密码。 |
Forms | 由ASP.NET负责进行身份验证,即网站提供一个登录页 面,要求用户输入用户名与密码,验证合法之后才可以 访问网站。 |
Passport | 使用微软提供的Passport SDK,通过第三方进行身份验 证。 |
在实际的Web项目,才、多采用Forms身份验证。
了解ASP.NET用户权限管理框架
1. MenberShip类:提供了一系列的静态方法与属性,完成创建用户、管理密码以及身份验证的功能。
2. MemberShipUser类:代表单个的用户权限信息,该对象公开成员资格用户的相关信息(如电子邮箱地址),并成为成员资格用户提供功能(如更改或重置其他密码的功能)。
3. Roles类:提供了一系列的静态方法与属性,完成角色管理的相关功能,例如,将某个用户加入到特定的角色中。
在网站中集成用户管理功能
在网页中,可以直接使用MemberShip的一系列静态方法来管理用户,如创建新用户、删除一个用户、更新用户信息等。例如:
MemberShip.CreateUser("username","password");
MemberShip.DeleteUser("username");
这就使人们可以方便的在网页中集成用户管理的功能
提取用户信息
MemberShip封装了用户信息,例如,以下代码查找管理员用户sa,并且输出其登录信息:
MemberShipUser user = MemberShip.GetUser("sa");
if(user!=null)
Response.Write("上次登陆时间:" +
user.LastLoginDate.ToString( );
角色管理
Roles类提供了一系列的静态方法可以完成创建/删除角色,向角色中添加和删除用户,以及查询用户是否属于某个角色等功能。
string[ ] users = Roles.GetUsersInRoles("Admin");
Roles.AddUserToRole("username","rolename");
使用这些静态方法,可以很方便的在页面中对用户进行角色鉴别。
用户登录凭据的保存
为了保存用户的登录信息,可以使用Forms-Authentication类的SetAuthCookie方法保存用户的登录凭据:
if(MemberShip.ValidateUser("username","password"))
//将用户登录凭据保存到Cookie中
FormsAuthentication.SetAuthCookie("username",true/false);
之后,在网页中就可以通过User.Identity属性来判断用户是否登录。
注销时,调用FormsAuthentication.SignOut( )方法,这样,用户的登录凭据就会被删除。以后要访问特定资源,就需要重新登录。