0

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

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

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

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

<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>

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

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

谢谢

4

2 回答 2

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]属性控制的,而不是在 web.config 中使用<authorization>标签。因此,例如,如果您想保护某个控制器操作仅对经过身份验证的用户可访问,您只需使用此属性装饰它:

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

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

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

于 2012-11-25T08:01:40.923 回答
0

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

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

<deny users="?" />

至:

<allow users="?" />
  1. 在我的表单中更改操作,因此它应该是:@Url.Action("MyLoginFunc", "MyLoginController")
于 2012-11-26T07:27:12.097 回答