我正在尝试在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>
但它仍然给我带来同样的错误......
知道什么可以解决我的问题吗?
由于
答案 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="?" />