设置web.config文件以检查是否设置了cookie

时间:2012-02-21 18:43:38

标签: c# asp.net html web-config authorization

如果未设置cookie,我想将我的web.config文件设置为重定向到login.cshtml。我怎样才能做到这一点?我现在所拥有的是表现出一些我不理解的行为。我有:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="Login.cshtml" name=".ASPXFORMSAUTH">
            </forms>
        </authentication>
        <authorization>
             <deny users="?" />
        </authorization>
    </system.web>
</configuration>

正在发生的事情是用户被重定向到

"Account/Login ReturnUrl=%2fdefault.cshtml"

所以正在呈现default.cshtml,其中集中了一个奇怪的登录页面?这可能与我的程序结构有关,但是我真的不明白什么叫做可以渲染这个奇怪的HTML?

2 个答案:

答案 0 :(得分:1)

loginUrl应该是将您带到登录视图的路径,就像您尝试通过Web浏览器导航到它一样。如果我猜它,那将是mywebsite.com/Account/Login。所以web.config中的相应代码是

<forms loginUrl="~/Account/Login" name=".ASPXFORMSAUTH">
</forms>

这将基于默认路线等。如果您的站点已修改路由和/或查看引擎覆盖,则可能会遇到不同的行为。

答案 1 :(得分:0)

我认为这里的问题是你在loginURL中引用了“Login.cshtml”,这是一个视图。在MVC中,您不会将用户路由到视图(在控制器中选择)。您必须将用户指向路径/ Controller / Action。正如在这里的另一篇文章中所提到的,如果你使用标准项目模板(指示应用程序根目录的代字号),那通常是“〜/ Account / Login”。