Sha*_*har 7 c# asp.net-mvc-4 form-authentication
我正在尝试创建一个匿名控制器,以实现表单身份验证.我配置了启用了匿名和表单身份验证的IIS 7,并将我的web.config设置为拒绝匿名用户.在登录控制器上,我将[AllowAnonymous]装饰放在我的控制器上(以及我的操作).
我可以在这组配置上获得的唯一操作是登录操作(返回"登录"视图),我猜测MVC允许我获取此操作,因为我将其设置为我的Web上的登录URL的.config.
这是我的web配置配置:
<authentication mode="Forms">
<forms loginUrl="~/Login/Login" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
所有其他操作都将重定向到登录操作.在这组配置中,我无法实现其他重要操作,如恢复密码,注册等.
我究竟做错了什么?
hVo*_*stt 15
在web.config中使用具有自定义行为的全局身份验证过滤器而不是授权配置(最适合MVC)
添加全局过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
}
Run Code Online (Sandbox Code Playgroud)
然后,[AllowAnonymous]将起作用,所有其他控制器和操作都需要授权.
Kam*_*yar 12
您还可以Authorize在RegisterGlobalFilters方法中注册过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
Run Code Online (Sandbox Code Playgroud)
然后使用AllowAnonymous需要匿名访问的操作方法的属性:
[Authorize]
public class AccountController : Controller
{
[AllowAnonymous]
public ActionResult RecoverPassword()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)