我正在遵循这篇文章,其中描述了如何在使用表单身份验证时为用户分配角色:
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"/>
如果我选择AspNetSqlRoleProvider
作为角色提供程序,那么它会导致与SQL服务器连接失败相关的运行时错误。
我应该怎么做才能使角色正常工作?我如何选择不使用角色提供程序,或者如果有必要的话,应该如何实现虚拟角色提供程序?