我需要在应该调用 Com+ 组件以验证用户身份并提供角色的位置上实现单点登录。简而言之,我需要绕过 MVC 4 中尝试访问 aspnetdb 数据库的默认机制。所以我从一个新的 MVC4 互联网项目开始,并添加了以下代码。
在 Global.asax
public void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs args)
{
bool retval = CreateUserObject("John", "pwd");
}
private bool CreateUserObject(string userName, string password)
{
string[] currentUserRoles = { "Admin", "User" };
GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(userName), currentUserRoles);
HttpContext.Current.User = userPrincipal;
//Thread.CurrentPrincipal = userPrincipal;
return true;
}
在 HomeController.cs 中,我为“关于”操作添加了 [Authorize] 属性,如下所示,它按预期工作
[Authorize]
public ActionResult About()
但是,如果我修改 [Authorize] 属性以仅允许“管理员”角色,如下所示,我会收到运行时错误(在底部)。有没有办法为登录用户使用我自己的角色集合,而不是查询数据库?我还需要做一些类似于用户配置文件的事情(即,我应该填充来自 Com+ 应用程序的值,而不是数据库。
[Authorize(Roles = "Admin")]
public ActionResult About()
“/”应用程序中的服务器错误。
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)