2010-08-01 58 views
0
我已经在web.config文件

将用户重定向到登录页面,只有在asp.net MVC不authonticated

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> </authentication>

这甚至会导致身份验证的用户,但未经授权的资源被请求用户以下标记

NET MVC项目重定向到登录页面。但我只需要重定向此页面,如果用户尝试访问未经授权的页面,但尚未经过身份验证(登录)并重定向到自定义页面。

有没有简单的方法来做到这一点,而无需编写自定义操作过滤器?

回答

3

此行在web.config中所做的所有操作仅仅是定义认证cookie和登录url的超时值。这是您的代码,通过例如装饰您的控制器和/或具有[Authorize]属性的操作来决定网站的哪些部分已通过身份验证或否。

+0

嗨季米特洛夫, 其实在我的项目我写操作,如以下 [HttpPost] [授权( Roles =“Admin”)] public ActionResult编辑(字符串id,FormCollection集合){/ ** /} 点是如果用户不在“Admin”角色中t在某些其他角色中,但他已经登录该用户也被重定向到具有上述web配置中的属性的登录页面。 – DSharper 2010-08-01 07:40:00

+0

@DSharper:是的,ASP.NET不擅长处理403条Forbidden邮件 - 它可以是“允许”或“拒绝”,并且角色在那时不会进入。 – 2010-08-01 08:24:02

0

请检查web.config文件中的“授权”设置。它应该是有点

<authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
    </authorization> 

也当用户验证成功确保你打电话

FormsAuthentication.SetAuthCookie(<username>, false); 
相关问题