4

我是 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 中定义拒绝匿名用户,因此当我尝试提交指向控制器的表单时,它会返回登录页面。我该如何处理这种情况?也许我已经了解了 asp.net 中的整个登录范例,在这种情况下,我很感激对此的解释。

4

1 回答 1

3

欢迎访问 asp.net。我特别喜欢 MVC 框架。希望你这样做。

很多点建议

1)如果您使用的是 MVC 框架,则不建议使用此方法。一种更优越的方法是将[Authorize]属性应用于控制器和/或您想要关闭非身份验证用户的方法。

这种方法可以非常灵活地决定您的用户可以匿名去哪里,他们可以去哪里进行身份验证,以及只有某些角色可以去哪里[Authorize(Roles="Admin")]

2) 如果要继续进行 web.config 设置和身份验证位置,以允许用户访问特定位置,请将此代码添加到 web.config

<location path="~/Home/">
  <system.web>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

3)我从你的问题中不明白的是你的意图。如果您希望用户能够登录,您应该打开~/Account/Logon并且您的登录表单应该(理想情况下)在那里发布。

于 2013-01-26T04:41:31.053 回答