Asp.net mvc 3 即使已登录也无法访问(MVC 3身份验证)
我在web.config中写道:Asp.net mvc 3 即使已登录也无法访问(MVC 3身份验证),asp.net-mvc-3,authentication,Asp.net Mvc 3,Authentication,我在web.config中写道: <authentication mode="Forms"> <forms loginUrl="~/en/Account/LogIn" timeout="2880" /> </authentication> 现在,当我运行该程序时——并尝试进入account info视图——它并没有将我带到那里,这很好。但是当我登录并尝试访问此视图时-它也不允许我访问该视图,这是多么糟糕 我这样做只是因为我想让登录的用户访
<authentication mode="Forms">
<forms loginUrl="~/en/Account/LogIn" timeout="2880" />
</authentication>
现在,当我运行该程序时——并尝试进入account info视图——它并没有将我带到那里,这很好。但是当我登录并尝试访问此视图时-它也不允许我访问该视图,这是多么糟糕
我这样做只是因为我想让登录的用户访问我的网站,而不是阻止他们。
我如何给他们访问权限
先谢谢你
解决
我需要在这个地方写url,就像这样:
<location path="~/en/Account/LogIn">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
而不是写在这个网站是基于webmatrix的吗?如果webmatrix库在您的引用中并被使用,它将覆盖web.config中设置的URL。我需要在此处编写URL,如下所示:
<location path="~/en/Account/LogIn">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
而不是,写在我的网站不是基于原始webmatrix的。如果我只是在/account/login之前添加/en,那没关系。。它还可以写什么?如果在它前面加上/en是什么意思。。你是说没有~?不,我是说在浏览器的url路径中。我想说的是,我在web.config中定义url的地方——我写了en/thing,但在程序运行时在浏览器中——没有这个/en。这不是完整的路径。我只是想将/en添加到浏览器获取部分url的位置,但我不知道它可以在哪里。上面的解决方案只是说允许每个人访问帐户/登录。通常在MVC中,这种方法是不受欢迎的,所有的安全性都应该在控制器级别。我看不出这对您的登录URL有什么影响,除非您同时使用[authorize]属性保护登录控制器?当然,我没有保护登录控制器,以便未登录的用户可以登录。事实上,这是我所知道的唯一一件事——一旦我做了这项运动——它就变得更好了。这很奇怪,因为这不是必需的。隐马尔可夫模型。。
<location path="~/en/Account/LogIn">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>