ASP.NET在页面的Context.User里面放了一个实现IPrincipal的对象,用来实现对已验证用户的管理。ASP.NET系统中,通常采用的方式就是扩展这个Context.User,让它里面保存定制的信息。 1、扩展方式 扩展方式基本上有两种:直接利用GenericPrincipal和自己写一个实现IPrincipal的类。IBuySpy用的前者,优点就是N简单。 Context.User = new GenericPrincipal(Context.User.Identity, roles); roles是一个保存了当前用户的角色信息的String,各个角色间用“;”分隔,由前面的代码调用数据层中的UserDB.GetRoles()方法来得到。 自己写一个实现IPrincipal的类其实也是N简单,你只需要实现两个接口:Identity属性返回一个IIdentity的用户标识对象,IsInRole(String role)判断用户是否具有参数中的角色。下面是我写的一个替代IBuySpy中原有扩展模式的类: public class IBSPrincipal : IPrincipal { private IIdentity _identity; private String[] _asRole; 下面是两个构造函数: public IBSPrincipal(IIdentity identity, String roles) { _identity = identity; _asRole = roles.Split(‘;’); } public IBSPrincipal(IIdentity identity, String[] roles) { _identity = [...]