MVC3应用程序中的登录页面 - 找不到登录功能

时间:2012-11-25 07:50:19

标签: asp.net-mvc login forms-authentication runtime-error

我正在尝试在MVC应用程序中创建自己的表单身份验证视图,但我的网站似乎找不到Login功能。 我首先尝试创建一个regulr视图,并使用ajax调用该函数,但它不起作用,所以我尝试使用表单并提交如下:

<form method="post" action="~/Login/Login_btnClick">

<input type="submit" name="Login" value="Login" />

当然我也在web配置中声明了它的表单身份验证,并将登录页面设置为链接:

<authentication mode="Forms">
  <forms loginUrl="~/Login/Login" defaultUrl="~/Home/index" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

我还使用了位置,因此我的javascripts和css文件将被找到。我得到了

  

无法加载资源:服务器响应状态为400(错误请求)

错误,我尝试将Controllers文件夹添加到位置:

<location path="Controllers">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

但它仍然给我带来同样的错误......

知道什么可以解决我的问题吗?

由于

2 个答案:

答案 0 :(得分:2)

您应该创建一个相应的控制器操作来处理表单提交。例如,如果您有以下表格:

<form method="post" action="/Login/LogOn">
    <input type="submit" name="Login" value="Login" />
</form>

然后您应该在LogOn控制器上创建Login操作:

[HttpPost]
public ActionResult LogOn()
{
    ...
}

此外,您在web.config中显示的代码片段中禁止访问Controllers文件夹也是绝对不必要的。在ASP.NET中,MVC控制器被编译,当您部署应用程序时,此类文件夹根本不存在。

除了ASP.NET MVC中的授权,还使用[Authorize]属性控制,而不是使用<authorization>标记在web.config中控制。因此,例如,如果您想保护某个控制器操作只能由经过身份验证的用户访问,您只需使用以下属性进行装饰:

[Authorize]
public ActionResult Index()
{
    ...    
}

以下是ASP.NET MVC站点上的some tutorials,它说明了如何在MVC应用程序中实现身份验证和授权。

此外,当您使用Internet模板创建新的ASP.NET MVC 3应用程序时,已经为您创建了AccountController以及相应的视图。您可以使用这个开箱即用的模板来更好地理解这些概念。

答案 1 :(得分:0)

谢谢,我得到了解决方案....

我应该做两件事: 1.更改

<deny users="?" />

为:

<allow users="?" />
  1. 在我的表单中更改操作,因此它应该是:@ Url.Action(“MyLoginFunc”,“MyLoginController”)