在最新的ASP.NET WebForms应用程序中,我们不再使用RoleManager等(据我所知),那么我们如何授权访问特定角色的网页呢?
在MVC中,我会使用Authorize属性但在WebForms中不存在,所以我不知所措 - 任何想法?
答案 0 :(得分:2)
查看使用/ a web.config文件和授权元素。您可以为此目的在任何目录中创建web.config文件(即,您可以在整个站点中包含多个web.config文件)。
一个链接(也可以查看其他链接): https://msdn.microsoft.com/en-us/library/8d82143t%28v=vs.85%29.aspx
答案 1 :(得分:1)
试试这段代码 登录时将角色传递给FormsAuthenticationTicket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserName.Text, DateTime.Now, DateTime.Now.AddMinutes(2880), false, role, FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
Response.Cookies.Add(cookie);
Response.Redirect(FormsAuthentication.GetRedirectUrl(UserName.Text, false));
关于Page_Load事件检索角色的特定网络表单
protected void Page_Load(object sender, EventArgs e)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
string userData = ticket.UserData;
string[] temp = userData.Split(',');
role=temp[0];
if (role!="Owner")
{
Response.Write("............");
}
}
如果您想在文件夹级别进行授权,则不要在webform上检查角色,而是在该文件夹的web.config文件中指定角色
<authorization>
<allow roles="Owner"/>
<deny users="*"/>
</authorization>