【发布时间】:2013-03-28 15:40:23
【问题描述】:
我正在尝试让 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 的调用。从 Global.asax 调用 FilterConfig.RegisterGlobalFilters 也没有帮助。
有什么想法吗?
【问题讨论】:
标签: authentication asp.net-mvc-4 oauth-2.0 simplemembership