自创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;
View Code

 

关于用户登录注销,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可获取登录名(都是实例属性)。

 

posted @ 2013-12-16 18:11  VisibleIsFalse  阅读(487)  评论(0编辑  收藏  举报