日期:2014-05-18  浏览次数:20507 次

在线等.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,可以定义你要管理的目录
其他节点应该看的懂巴