2015-06-09 6 views
0

У меня есть существующая база данных членства ASP.NET, к которой я должен придерживаться. Я разрабатываю новый веб-сайт MVC5 в VS2013 (обновление 4) с использованием нового шаблона проекта MVC. Я изменил web.config, чтобы убедиться, что указан старый тип аутентификации. Я также модифицировал действие [HttpPost] для входа в систему, чтобы гарантировать, что я вхожу в систему с моей базой данных членства - он правильно регистрирует меня и генерирует cookie аутентификации по мере необходимости.ASP.NET MVC5 с существующей базой данных членства

Однако сайт по-прежнему перенаправляет меня на страницу входа, поскольку я не аутентифицирован. Request.IsAuthenticated показывает, что я не аутентифицирован. Что мне не хватает? Какие у меня варианты? EDIT: изменения web.config (только изменения):

<connectionStrings> 
    <add name="MyCS" connectionString="Data Source=sql1;Initial Catalog=MyDB;Persist Security Info=True;User ID=mysa;Password=mypw" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
<system.web> 
    <authentication mode="Forms"> 
    <forms timeout="20" name="seAdmin" loginUrl="~/Account/Login" /> 
    </authentication> 
    <roleManager enabled="true" defaultProvider="CustomizedRoleProvider"> 
    <providers> 
     <clear /> 
     <add name="CustomizedRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="MyCS" applicationName="/seAdmin" /> 
    </providers> 
    </roleManager> 
    <membership defaultProvider="CustomizedMembershipProvider"> 
    <providers> 
     <clear /> 
     <add name="CustomizedMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyCS" applicationName="/seAdmin" /> 
    </providers> 
    </membership> 
    <machineKey validationKey="63A7C07B191BA3EF02DD4866C420DCAB81C9FFCCC617DE40ED6E2B89A2FC2BA3FA32C39D183FE0708E9279C14E58318D0C5E171C0AF802F154430679D1778485" decryptionKey="F5B9049DECB8C9A23B1D131E63D2ED5C15FF0AEB3C3E96FC" validation="SHA1" /> 
</system.web> 

Войти Действие:

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public ActionResult Login(LoginViewModel model, string returnUrl) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 

    if (Membership.ValidateUser(model.Email, model.Password)) 
    { 
     FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe); 
     if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("", "The user name or password provided is incorrect."); 
    } 
    return View(model); 
} 

FilterConfig добавляет глобальный атрибут авторизации

public class FilterConfig 
    { 
     public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
     { 
      filters.Add(new HandleErrorAttribute()); 

      filters.Add(new AuthorizeAttribute() { Roles = "CWA" }); 
     } 
    } 
+0

У вашего вопроса недостаточно информации, чтобы получить хороший ответ, также я не думаю, что переход от членства к личности - это просто, показать нам в коде, что вы изменили, а также взглянуть на это: http : //www.asp.net/identity/overview/migrations/migrating-an-existing-website-from-sql-membership-to-aspnet-identity –

+0

Извините за недостаточно подробное описание. Я не перехожу из членства в Identity. То, что я хотел бы сделать, - реализовать аутентификацию членства в MVC 5 с использованием модифицированной версии шаблона проекта по умолчанию. Если такая модификация слишком сложна, я с удовольствием принимаю любую другую идею, кроме использования MVC 4 вместо MVC 5. Я обновлю свой вопрос с изменениями кода. – evgeny

+0

Вы удалили запись «удалить» из раздела «Модули» в файле web.config, который удаляет модуль FormsAuthentication IIS? FYI, FormsAuthentication не имеет ничего общего с Членством. –

ответ

2

У меня есть несколько теорий относительно того, почему он не работает, во-первых, в web.config есть метка <system.webServer>, должна быть строка для удаления FormsAuthentication, попробуйте Комментируя это, или добавьте еще раз, вот так:

<system.webServer> 
<modules> 
    <remove name="FormsAuthentication" /> 
    <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" /> 
</modules> 

вторых попробуйте User.Identity.IsAuthenticated, чтобы увидеть это ложь тоже, и вы имеете какую-либо роль в вашем приложении?

+0

Большое спасибо Эрику и Xellarix, комментируя '' решил проблему, теперь я могу войти в систему успешно. – evgeny

Смежные вопросы