Я не думаю, что [Authorize(Roles = "DefaultUser")]
означает, что люди могут редактировать только свой профиль. Это скорее означает, что каждый в роли DefaultUser может редактировать профили ... Вот обсуждение этого вопроса, это почти тот же вопрос: авторизация asp.net mvc с использованием ролей
EDIT:
Хорошо, тогда ваша проблема в том, что роли и личность не работают с OpenID? Функция Authorize работает только в том случае, если HttpContext.Current.User
содержит правильный принципал. Если вы используете OpenID, этого не происходит из коробки, но вы должны сделать что-то подобное в вашем Global.asax:
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(encTicket);
YourAppIdentity id = new YourAppIdentity(ticket);
string username = ticket.Name;
string[] roles = Roles.GetRolesForUser(username);
GenericPrincipal prin = new GenericPrincipal(id, roles);
HttpContext.Current.User = prin;
}
}
}
где YourAppIdentity должен быть чем-то, что реализует IIdentity ...