自创page类中获取当前用户权限 --by winter
在三层中,关于如何获取当前用户的权限?是管理员,还是普通用户?
大致思路: 先通过this.User.Identity.Name 获取当前用户的实体(model),然后根据实体的用户
角色属性(rolename)来最终获取当前用户的权限。
参考代码:
1 /// <summary> 2 /// 获取当前登录的用户 3 /// </summary> 4 public Model.Users CurrentUser 5 { 6 get 7 { 8 if (_currentUser == null) 9 { 10 //通过用户名来获得实体。 11 _currentUser = new BLL.Users().GetModel(this.User.Identity.Name); 12 //找不到(被删除)或被禁用,退出登录 13 if (_currentUser == null || !_currentUser.Enabled) 14 { 15 FormsAuthentication.SignOut(); 16 Response.Redirect(FormsAuthentication.DefaultUrl); 17 Response.End(); 18 } 19 } 20 return _currentUser; 21 } 22 } 23 Model.Users _currentUser; 24 /// <summary> 25 /// 获取当前登录的用户的权限 26 /// </summary> 27 public Model.AccessRights Rights 28 { 29 get 30 { 31 if (_rights == null) 32 { 33 var rights = new BLL.AccessRights().GetModelList( 34 string.Format("AccessRightID=(SELECT top 1 [AccessRightID] FROM 35 36 [Roles] where [RoleName]='{0}')", CurrentUser.RoleName)); 37 if (rights.Count > 0) 38 _rights = rights[0]; 39 else 40 _rights = DefaultRights; 41 } 42 return _rights; 43 } 44 } 45 Model.AccessRights _rights;
关于用户登录注销,form身份验证,可参考:http://www.cnblogs.com/fish-
li/archive/2012/04/15/2450571.html(这里有关于登录的一个很好很高级的例子---实现自定义身份认
证标识,还有--保护受限制的页面,这个也很重要,很好的文章。)
1. 如何判断当前请求是一个已登录用户发起的?(即判断是否已经登录?)
2. 如何获取当前登录用户的登录名?
在标准的ASP.NET身份认证方式中,上面二个问题的答案是:
1. 如果Request.IsAuthenticated为true,则表示是一个已登录用户。
2. 如果是一个已登录用户,访问HttpContext.User.Identity.Name可获取登录名(都是实例属性)。