2012-11-25 72 views
0

我想在MVC应用程序中创建自己的窗体身份验证视图,但我的网站似乎找不到登录功能。 我第一次尝试创建一个regulr视图,并使用AJAX调用的功能,但它没有工作,所以我试图用表格并提交如下:在MVC3应用程序的登录页面 - 无法找到登录功能

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

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

我在网上也宣告配置它的形式认证,并设置登录页面是链接:

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

我也使用过的位置,所以我的JavaScript和CSS文件会被发现。当我得到了

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

错误回应,我想也添加控制器文件夹位置:

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

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

任何想法可以解决我的问题?

感谢

回答

2

您应该创建一个相应的控制器动作将处理表单提交。因此,举例来说,如果你有以下形式:

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

那么您应该Login控制器上创建LogOn动作:

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

而且你已经从你的web.config中所示的代码片段中,你禁用访问Controllers文件夹是绝对不必要的。在ASP.NET MVC控制器被编译,当你部署你的应用程序时,这个文件夹根本不存在。

除ASP.NET MVC中的授权使用[Authorize]属性控制外,而不使用<authorization>标记控制web.config。

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

这里是some tutorials在ASP.NET MVC网站,其中说明了如何可以实现:因此,举例来说,如果你想防止被访问的某个控制器动作只有通过验证的用户您只需与此属性装饰它MVC应用程序中的身份验证和授权。

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

0

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

我应该做两件事情:1 。更改

<deny users="?" /> 

到:

<allow users="?" /> 
  1. 改变我的表格的动作,所以应该是:@ Url.Action( “MyLoginFunc”, “MyLoginController”)