Перенаправление на страницу стратегии входа - PullRequest
3 голосов
/ 21 мая 2009

У меня есть ссылка на странице, которая позволяет пользователю выполнять определенные действия, если они вошли в систему. Если они не вошли в систему, я хочу, чтобы ссылка перенаправила их сначала на страницу входа. Это довольно распространенное явление. Какой лучший способ сделать это? В настоящее время я делаю это, но мне это не нравится:

<% if(Model.IsUserAuthenticated){ %>
<%= Html.ActionLink("Start Puzzle", "StartPuzzle", "Puzzles")%>
<%} else { %>
<%= Html.ActionLink("Start Puzzle", "Login", "Account")%>
<%} %>

Вы поняли идею. Мне не очень нравится иметь логику в таком виде. Лучше всего просто перенаправить действие «StartPuzzle», если оно не вошло в систему?

Ответы [ 4 ]

2 голосов
/ 22 мая 2009

создайте метод расширения htmlhelpers, который проверит, аутентифицирован ли пользователь, и вернет ту или иную ссылку ... примерно так:

по вашему мнению:

<%=Html.RenderLoginLink()%>

а в тебе htmlhelper:

if(autorized)
{ 
   return Html.ActionLink("Start Puzzle", "StartPuzzle", "Puzzles");
}
else
{
   return Html.ActionLink("Start Puzzle", "Login", "Account");
}
1 голос
/ 21 мая 2009

Такая большая логика в представлении прекрасно, ИМО. Но если их больше, или вы не хотите даже так много, тогда вы можете иметь два отдельных представления для вошедших в систему и анонимных пользователей и решать, какое из них вы будете показывать в контроллере. Либо есть один просмотр и передать текст ссылки и URL с контроллера в зависимости от условий.

1 голос
/ 22 мая 2009

Поместите атрибут «Authorize» поверх действия StartPuzzle в контроллере. Таким образом, неаутентифицированный пользователь будет автоматически перенаправлен на страницу входа, на которой returnUrl указывает на то, к чему обращались, когда он не вошел в систему. Таким образом, после успешного входа в систему он будет перенаправлен обратно к началу головоломки .

1 голос
/ 21 мая 2009

Вот хороший пост от Роба Конери об аутентификации с использованием MVC с использованием атрибутов: Аутентификация и перенаправление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...