重定向到登录页面策略
问题描述:
我在页面上有一个链接,允许用户在他们登录时执行特定操作。如果他们没有登录,我希望链接先将他们指向登录页面。这很常见。什么是最好的方法来做到这一点?目前我正在这样做,但我不喜欢它:重定向到登录页面策略
<% if(Model.IsUserAuthenticated){ %>
<%= Html.ActionLink("Start Puzzle", "StartPuzzle", "Puzzles")%>
<%} else { %>
<%= Html.ActionLink("Start Puzzle", "Login", "Account")%>
<%} %>
你明白了。我真的不喜欢在这个视图中有逻辑。如果没有登录,只是让“StartPuzzle”动作重定向会更好吗?
答
创建htmlhelpers扩展方法,这将检查用户是否被验证,并返回一个链接或另一个......是这样的:在你看来
:
<%=Html.RenderLoginLink()%>
你
和的HtmlHelper:
if(autorized)
{
return Html.ActionLink("Start Puzzle", "StartPuzzle", "Puzzles");
}
else
{
return Html.ActionLink("Start Puzzle", "Login", "Account");
}
答
在视图中多逻辑是完全正常的,海事组织。但是,如果还有更多,或者你不想那么多,那么你可以有两个单独的视图来登录和匿名用户,并决定你要在控制器中显示哪一个。或者有一个视图,并根据条件传递来自控制器的链接文本和URL。
答
在控制器的StartPuzzle操作顶部放置一个“授权”属性。通过这种方式,未经身份验证的用户将被自动重定向到登录页面,并使returnUrl指向他未登录时访问的内容。这样,在成功登录后,他将被重定向回拼图开始。
哦,是的,从rob conery的旧规则是:如果你有'如果'在你的看法这就是htmlhelper的地方:) – Marko 2009-05-22 13:33:40