网站用户权限管理

现在几乎所有的网站都有一套自己的权限管理来区分:游客,注册用户,管理员帐户

使用WebConfig对文件夹进行区分管理是很方便的

首先在需要进行区分的文件夹内添加WebConfig如下: 

<? xml version = "1.0"encoding="utf-8" ?>
< configuration >
 < system.web >
    < customErrors mode = "Off"/>
 
    <!-- security -->
    < authorization >
      < allow roles = "administrator" />
      <!-- 允许所有用户 -->
      < deny users = "*"></deny>
      <!--  <allow     users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
                  <deny      users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
            -->
    </ authorization >
    < httpRuntime useFullyQualifiedRedirectUrl = "true"maxRequestLength="1024000"executionTimeout="43200" />
 </ system.web >
</ configuration >
 
这样这个文件夹就只能由属于 administrator 用户组的用户才能登录了.
 
当然在用户登陆成功后要给他发一个Cookice代码如下:
FormsAuthentication .Initialize();
 // 为了实现认证,创建一个新的票据
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                        1, // 票据版本号
                        this.Username.Text, // 票据持有者
                        DateTime.Now, //分配票据的时间
                        DateTime.Now.AddMinutes(30), // 失效时间
                        true, // 需要用户的 cookie
                        login, // 用户数据,这里其实就是用户的角色
                        FormsAuthentication.FormsCookiePath);//cookie有效路径
                        //使用机器码machine key加密cookie,为了安全传送
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication .FormsCookieName, // 认证cookie的名称
hash); //加密之后的cookie
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
//添加cookie到页面请求响应中
Response.Cookies.Add(cookie);
 
 
然后在Global.asax.cs中添加 Application_AuthenticateRequest ,用于获取用户权限
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
        {
            if (HttpContext.Current.User != null)
            {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                {
                    if (HttpContext.Current.User.Identity is FormsIdentity)
                    {
                        FormsIdentity id =
                            (FormsIdentity)HttpContext.Current.User.Identity;
                        FormsAuthenticationTicket ticket = id.Ticket;
 
                        // 取存储在票据中的用户数据,在这里其实就是用户的角色
                        string userData = ticket.UserData;
                        string[] roles = userData.Split(',');
                        HttpContext.Current.User = new GenericPrincipal(id, roles);
                    }
                }
            }
        }
 

通过以上方法就可以轻松完成网站的权限管理了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值