Причина, по которой оно работает, когда вы запускаете приложение с точки зрения пользователя, заключается в том, что вы пытаетесь получить доступ к защищенному ресурсу (то есть ресурсу, требующему аутентификации). Когда пользователь не аутентифицирован, поведение по умолчанию состоит в том, чтобы вызвать пользователя (то есть аутентифицировать пользователя), и пользователь перенаправляется на страницу входа в систему. Когда пользователь перенаправляется, задается параметр запроса returnUrl
, чтобы пользователь мог быть перенаправлен обратно на этот ресурс после проверки подлинности. В этом случае returnUrl
является представлением индекса пользователя.
Ссылка при запуске приложения из
Вид: локальный: 2627 / счета / LoginReturnUrl =% 2FUsers% 2FIndex
Звучит так, будто вы хотите, чтобы представление Users
было вашей домашней страницей или, по крайней мере, страницей, на которую пользователь перенаправляется после входа в систему. В вашем AccountController
вы захотите форсировать это действие, если это желаемое поведение.
например:
switch (result)
{
case SignInStatus.Success:
return return RedirectToAction("Index", "Users");
...
}
Вы также можете остерегаться, если присутствует returnUrl
. Исходя из ваших требований, вы можете дать returnUrl
наивысший приоритет.
If ( SignInStatus.Success)
{
return !string.IsNullOrEmpty(returnUrl) ?
RedirectToLocal(returnUrl):
RedirectToAction("Index", "Users");
}
По сути, все сводится к тому, куда вы хотите отправить (он же маршрут) пользователя после аутентификации. Возможно, пользователь предпочитает свою домашнюю страницу или что, если пользователь является администратором, вы всегда направляете его в индексное представление в UsersController
.
В демонстрационном проекте вы должны просмотреть файл Start.Auth.cs и ознакомиться с параметрами аутентификации.
Например, LoginPath устанавливается в этом файле. Это путь, по которому пользователь будет перенаправлен для проверки подлинности.
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{...}
});
Ссылка RedirectToAction:
http://msdn.microsoft.com/en-us/library/dd470594.aspx