我在MVC项目中有登录页面,我创建了授权配置。
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" defaultUrl="~/Home/Index"/>
</authentication>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
如何在注册页面中访问?
答案 0 :(得分:3)
根据您使用的MVC版本,我现在在MVC3 / 4中看到的是通过将Authorize()
添加为全局,而不是限制对特定操作的访问,以限制对所有操作的访问过滤,然后使用AllowAnonymous()
属性授予对一些选择操作的访问权限,以充当不需要保护的操作的白名单。 (如登录,注册等)。
<强>的global.asax 强>
protected void Application_Start()
{
filters.Add(new AuthorizeAttribute());
}
<强> AccountsController.cs 强>
[AllowAnonymous]
public ActionResult Login()
{
//Perform login...
}
然后你 web.config 就是这个
<authorization>
<allow users="*" />
</authorization>
答案 1 :(得分:0)
默认情况下,您应该转到Register()
控制器的Account
操作方法
// GET:/ Account / Register
根据你的web.config:尝试在<system.web>
标记之前将其添加到web.config。
<location allowOverride="true" path="Account/Register">
<system.web>
<authorization>
<allow users="?" />
<deny users="*" />
</authorization>
</system.web>
</location>
答案 2 :(得分:0)
尼克·阿尔布雷希特(Nick Albrecht)+1,但我发现“过滤器”含糊不清,因此我不得不进一步挖掘。
实际上,似乎
filters.Add(new AuthorizeAttribute());
该代码属于App_Start
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeTokens.AuthorizeWithMessage());
}
}
和FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
在Application_Start中被调用。