我正在关注这篇文章,其中描述了如何在使用表单身份验证登录时为用户分配角色:
public void Application_AuthenticateRequest( Object src , EventArgs e )
{
if (!(HttpContext.Current.User == null))
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
{
System.Web.Security.FormsIdentity id;
id = (System.Web.Security.FormsIdentity)HttpContext.Current.User.Identity;
String[] myRoles = new String[2];
myRoles[0] = "Manager";
myRoles[1] = "Admin";
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
}
}
}
我将角色逻辑放在事件处理程序中,所以我基本上不需要角色提供者。尽管如此,为了运行它,我似乎必须在web.config
. 可悲的是,如果我只是说:
<roleManager enabled="true"/>
它会导致与 SQL 服务器连接失败相关的运行时错误,就像我选择AspNetSqlRoleProvider
角色提供者一样。
我应该怎么做才能让角色以这种方式工作?我如何选择不使用角色提供者,或者我应该如何实现一个虚拟角色提供者(如果有任何意义)?