您的位置:首页 > 运维架构 > 网站架构

网站用户权限管理

2007-05-31 20:34 417 查看
现在几乎所有的网站都有一套自己的权限管理来区分:游客,注册用户,管理员帐户

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

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

[align=left]<?xmlversion="1.0"encoding="utf-8" ?>[/align]
[align=left]<configuration>[/align]
[align=left] <system.web>[/align]
[align=left] <customErrorsmode="Off"/>[/align]
[align=left] [/align]
[align=left] <!-- security -->[/align]
[align=left] <authorization>[/align]
[align=left] <allowroles="administrator" />[/align]
[align=left] <!-- 允许所有用户 -->[/align]
[align=left] <denyusers="*"></deny>[/align]
[align=left] <!-- <allow users="[逗号分隔的用户列表]"[/align]
[align=left] roles="[逗号分隔的角色列表]"/>[/align]
[align=left] <deny users="[逗号分隔的用户列表]"[/align]
[align=left] roles="[逗号分隔的角色列表]"/>[/align]
[align=left] -->[/align]
[align=left] </authorization>[/align]
[align=left] <httpRuntimeuseFullyQualifiedRedirectUrl="true"maxRequestLength="1024000"executionTimeout="43200" />[/align]
[align=left] </system.web>[/align]
</configuration>

这样这个文件夹就只能由属于administrator用户组的用户才能登录了.

当然在用户登陆成功后要给他发一个Cookice代码如下:
[align=left]FormsAuthentication.Initialize();[/align]
[align=left] // 为了实现认证,创建一个新的票据[/align]
[align=left]FormsAuthenticationTicket ticket = new FormsAuthenticationTicket([/align]
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,用于获取用户权限
[align=left]protected void Application_AuthenticateRequest(Object sender, EventArgs e)[/align]
[align=left] {[/align]
[align=left] if (HttpContext.Current.User != null)[/align]
[align=left] {[/align]
[align=left] if (HttpContext.Current.User.Identity.IsAuthenticated)[/align]
[align=left] {[/align]
[align=left] if (HttpContext.Current.User.Identity is FormsIdentity)[/align]
[align=left] {[/align]
[align=left] FormsIdentity id =[/align]
[align=left] (FormsIdentity)HttpContext.Current.User.Identity;[/align]
[align=left] FormsAuthenticationTicket ticket = id.Ticket;[/align]
[align=left] [/align]
[align=left] // 取存储在票据中的用户数据,在这里其实就是用户的角色[/align]
[align=left] string userData = ticket.UserData;[/align]
[align=left] string[] roles = userData.Split(',');[/align]
[align=left] HttpContext.Current.User = new GenericPrincipal(id, roles);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
通过以上方法就可以轻松完成网站的权限管理了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: