在线等.FormsAuthenticationTicket角色写入
比如我在用户数据库里多增加一个类型字段(0,1,2,3)之类的
然后用目录配置文件中的<allow roles="0" />限制用户目录访问
以下是我原程序中的登录cookie写入方式.
string userRoles = model.Ltype.ToString();
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, user_name, DateTime.Now, DateTime.Now.AddMinutes(30), false, userRoles,"/");
string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
UserCookie.Domain = Domainym;
HttpContext.Current.Response.Cookies.Add(UserCookie);
再用子目录中的Web.config加己限制
<authorization>
<!--限制为只有0和3的用户可以访问这个目录-->
<allow roles="0,3" />
<deny users="*" />
</authorization>
现在程序中..
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName);
cookie.Values["userid"] = u.Uid.ToString();
//XXXXXX为general.config文件中的<Passwordkey>节点的内容,就是密钥
cookie.Values["password"] = Utils.UrlEncode(DES.Encode(u.Password, "44566J2H0T"));
cookie.Values["tpp"] = u.Tpp.ToString();
cookie.Values["ppp"] = u.Ppp.ToString();
cookie.Values["pmsound"] = u.Pmsound.ToString();
cookie.Values["invisible"] = u.Invisible.ToString();
cookie.Values["referer"] = "http://bbs.hhjia.com.cn/forumindex.aspx";
cookie.Values["sigstatus"] = "1";
cookie.Values["expires"] = "30";
//Domain信息一定要添加.而且要与论坛里关于COOKIES设置部份要一样
cookie.Domain = ".hhjia.com.cn";
cookie.Expires = DateTime.Now.AddDays(1);
HttpContext.Current.Response.AppendCookie(cookie);
这种方式要用这个做登录的话
怎么做才能让我主站子目录中的配置文件
<authorization>
<!--限制为只有0和3的用户可以访问这个目录-->
<allow roles="0,3" />
<deny users="*" />
</authorization>
生效.
[解决办法]
配置文件不必要在每个子目录建立。那也太繁琐了。太难管理维护了。
直接在根目录建立就行。
<location path="Admin">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
path,可以定义你要管理的目录
其他节点应该看的懂巴