Я был в состоянии успешно использовать (код с точки зрения индекса)Дюрандаль безопасности MVC аутентификации приложение
@if (@User.Identity.IsAuthenticated)
{
<div id="applicationHost">
@Html.Partial("_splash")
</div>
@Scripts.Render("~/scripts/vendor");
if(HttpContext.Current.IsDebuggingEnabled) {
@Html.AntiForgeryToken()
<script>
window.userId = "@User.Identity.Name";
console.log(window.userId);
</script>
<script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>
} else {
<!-- Remember to run the Durandal optimizer.exe to create the main-built.js -->
<script type="text/javascript" src="~/App/main-built.js"></script>
}
}
else
{
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<div id="login">
@Html.Partial("Login")
</div>
}
, чтобы получить приложение, чтобы быть изначально вынуждены на страницу входа, после входа в систему (с использованием стандартного MVC контроллера счета и форма входа в систему из стандартного приложения mvc4.
Затем я добавил кнопку в нижний колонтитул, чтобы вызвать метод контроллера выхода (эта функция была добавлена в shell.js, и я подтвердил, что она вызывается, когда кнопка нажата)
function logoff() {
var token = $("input[name='__RequestVerificationToken']").val();
$.ajax({
url: "/Account/LogOff",
cache: false,
type: "POST",
async: false,
data: { "__RequestVerificationToken": token },
success: function (data) {
log("from success in logoff", data, false); //this shows up in the log
return true;
},
error: function (data) {
return false;
}
});
}
Я не отлажена trhough метода контроллера и успешно вызывает
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
try{
WebSecurity.Logout(); //this call does not generate an error
}
catch(Exception excp)
{
string msg = excp.Message;
}
return RedirectToAction("index", "HotTowel");
}
страница индекса называется, и пользователь больше не идентифицирован, но вызов PartialView («Вход») выше не изменяет содержимое браузера.
Я не понимаю, почему частичный вид входа в систему не загружен в браузере. У меня нет никаких ошибок в консоли, и никаких других признаков того, что что-то не так.
У меня есть googled around и не найдены примеры того, кто расширяет шаблон Hot Towel для поддержки аутентификации. (кроме пары вещей на SO о том, как установить токен аутентификации) Я сделал первые шаги, просто предоставив индексному указателю возможность заставить пользователя войти в систему до того, как приложение durandal будет даже загружено. Это отлично работает.
Каков правильный способ заставить это работать? У меня есть образец с использованием набора для начинающих Durnadal, который показывает это поведение. Я могу предоставить всем, кто в ней нуждается.
javascript в shell.js возвращает html, который является указательной страницей, на которую указывает перенаправление. (работает при попытке получить предупреждение, чтобы показать все это проблематично)
Работа на получение образца в SkyDrive и т.д.
Что такое аргумент «данных» из вашего «успешного» обратного вызова? – RyanKeeter
элемент данных, возвращаемый с javascript ниже –
, застегните свой проект, а затем разместите его здесь. Есть несколько возможных причин, по которым он может не работать. Вместо маршрутизации к индексу после выписки ... перенаправляйтесь на страницу входа. Также проверьте, работает ли Html.Render («Вход»). –