我是 C# 和 asp.net 世界的新手。所以我要问的问题可能很蹩脚,希望大家能忍受我:)。好的,我正在阅读一本书并了解在 asp.net 中如何进行身份验证和授权的基础知识。
现在我已经在我的 web.config 中定义了我的身份验证和授权;
<authentication mode="Forms">
<forms loginUrl="~/Home/LogOn" protection="All" path="/" timeout="30" name="MyCookies" />
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
然后我继续创建我的登录表单。具体如下;
<form method="post" action="../Home/LogUser">
<fieldset>
<legend>Log On</legend>
<p>User Name</p>
<p><input type="text" name="txtUserName" id="txtUserName" size="30"/></p>
<p>Password</p>
<p><input type="password" name="txtPassword" id="txtPassword" size="30"/></p>
<p><input type="submit" name="btnSubmit" value="Log On"/></p>
</fieldset>
</form>
我的问题是,因为我已经在我的 web.config 中定义拒绝匿名用户,所以当我尝试提交我的指向 Controller 的表单时,它会返回到登录页面。我该如何处理这种情况?也许我已经理解了 asp.net 中的整个登录范例,在这种情况下,我很感激对这方面的解释。
最佳答案
欢迎来到 asp.net。我特别喜欢 MVC 框架。希望你这样做。
很多建议
1) 如果您使用的是 MVC 框架,则不推荐使用此方法。一种更好的方法是将 [Authorize]
属性应用于 Controller 和/或您想要关闭的方法,以防止未经身份验证的用户访问。
这种方法允许极大的灵 active 来决定您的用户可以匿名去哪里,他们可以在哪里进行身份验证,以及只有特定角色可以去哪里 [Authorize(Roles="Admin")]
2) 如果您想继续进行 web.config 设置和身份验证位置,以允许用户访问特定位置,请将此代码添加到 web.config
<location path="~/Home/">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
3) 我从你的问题中不明白的是你的意图。如果您希望用户能够登录,您应该打开 ~/Account/Logon
并且您的登录表单应该(理想情况下)张贴在那里。
关于c# - 无法将我的登录结果定向到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14533750/