我正在尝试让 SimpleMembership 为我的 ASP.Net MVC 应用程序工作。我所有需要授权的控制器都扩展了一个名为 SecureController 的基类:
[Authorize]
[InitializeSimpleMembership]
[HandleException]
public class SecureController : Controller
{
protected UserProfile CurrentUser;
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var currentuserid = WebSecurity.CurrentUserId;
var context = new UsersContext();
CurrentUser = context.UserProfiles.SingleOrDefault(u => u.AuthenticationId == currentuserid);
if (CurrentUser != null)
{
ViewBag.UserName = CurrentUser.Name;
ViewBag.UserId = CurrentUser.Id;
}
}
}
我得到“在调用“WebSecurity”类的任何其他方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法。此调用应放在站点根目录的 _AppStart.cshtml 文件中。尝试调用 WebSecurity.CurrentUserId 时出现错误消息。我在 InitializeSimpleMembershipAttribute 的 OnActionExecuting 中设置了断点,但断点从未命中。似乎 InitializeSimpleMembership 被忽略了。
我还在 FilterConfig 中添加了对 InitializeSimpleMembershipAttribute 的调用。FilterConfig.RegisterGlobalFilters 从 Global.asax 被调用,这也没有帮助。
有任何想法吗?