我需要了解SiteMapProvider.IsAccessibleToUser()
的工作原理。
内置XmlSiteMapProvider
次调用HttpContext.User.IsInRole()
,在表单身份验证时使用System.Security.Principal.GenericPrincipal
。
当前用户在哪里获得其角色?哪个提供商加载此类信息?我想重载它并使用自定义逻辑。
答案 0 :(得分:3)
您可以通过实施RoleProvider来实现此目的。看看这些链接:
http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx
http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx
答案 1 :(得分:2)
要使用自定义逻辑,您可以使用角色创建自己的表单身份验证cookie,并在Global.asax中将其读回。
见这些:
private void SetAuthenticationCookie(int employeeID, List<string> roles)
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
http://weblogs.asp.net/rajbk/archive/2010/04/01/securing-an-asp-net-mvc-2-application.aspx