在我的ASP.NET MVC应用程序中,我有大多数控制器装饰
[Authorize(Roles="SomeGroup")]
Run Code Online (Sandbox Code Playgroud)
当用户无权访问某些内容时,会将其发送到"〜/ Login",这是我的帐户控制器上的"登录"操作.
如何确定用户因未获得授权而已到达登录页面,以便我能够显示相应的错误?
我正在创建一个自定义角色提供程序,我设置了一个Authorize属性,在我的控制器中指定一个角色,它工作正常,如下所示:
[Authorize(Roles="SuperAdmin")]
public class SuperAdminController : Controller
...
Run Code Online (Sandbox Code Playgroud)
但是当用户无法访问此控制器时,他将被重定向到登录页面.如何将他重定向到"AcessDenied.aspx"页面?
我有一个具有Authorize属性的控制器,如下所示:
[Authorize(Roles = "Viewer")]
public class HomeController : Controller
{
//...
}
Run Code Online (Sandbox Code Playgroud)
我的web.config有customErrors设置如下:
<customErrors mode="On">
<error statusCode="401" redirect="notauthorized.html"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用非授权角色在Home控制器上调用操作时,我只得到一个空白页面.我没有被重定向到自定义页面.有任何想法吗?
我试图了解在MVC Preview 4中使用Authorize [Authorize] Action Filter时错误处理的工作原理.
我有一个看起来像这样的动作:
[Authorize(Roles = "DOMAIN\\NOTAUTHORISED_ROLE" )]
[HandleError]
public ActionResult NeedAuthorisation()
{
throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)
当我访问网址:时http://localhost:2197/testAuthorisation/NeedAuthorisation,我的浏览器中出现了一个空白页面.在Firebug中,我可以看到已发出请求并401 - Unauthorised返回了响应状态.但我没有被重定向或返回了customError.使用我授权的角色时,一切都按预期工作.
这是使用Windows身份验证.我正在编写一些代码来尝试Forms身份验证,看看我是否遇到了同样的问题.我已<customerrors mode="On"/>在testAuthorisation文件夹和Shared文件夹中设置并创建了错误页面.
我有一个ASP.NET MVC3应用程序与Windows身份验证部署到IIS6.当经过身份验证的用户单击他们无权查看的链接时,系统会提示他们按预期输入用户名和密码(在浏览器对话框中,而不是页面中).
但是,单击取消或输入三次无效凭据后,我看到一个空白页面,而不是看到401 Unauthorized页面.
查看Fiddler,点击取消后有三个请求/响应.以下是响应摘要和标题:
ASP.NET Access被拒绝消息(401.2)
HTTP/1.1 401未授权日期:星期五,2012年7月20日14:34:21 GMT服务器:Microsoft-IIS/6.0 WWW-身份验证:协商WWW-Authenticate:NTLM X-Powered-By:ASP.NET X-AspNet-版本: 4.0.30319 Cache-Control:private Content-Type:text/html; charset = utf-8内容长度:1701代理支持:基于会话的身份验证
IIS您无权查看此页面(401.1)
HTTP/1.1 401未经授权的内容长度:1539内容类型:text/html服务器:Microsoft-IIS/6.0 WWW-Authenticate:NTLM TlRMTVNTUAACAAAADAAMADgAAAAF ...(为简洁起见省略)X-Powered-By:ASP.NET日期:星期五,2012年7月20日14:34:21 GMT代理支持:基于会话的身份验证
空响应
HTTP/1.1 401未授权日期:星期五,2012年7月20日14:34:21 GMT服务器:Microsoft-IIS/6.0 WWW-身份验证:协商WWW-Authenticate:NTLM X-Powered-By:ASP.NET X-AspNet-版本: 4.0.30319 X-AspNetMvc-Version:3.0 Cache-Control:private Content-Length:0代理支持:基于会话的身份验证
如何让它显示401错误页面?
更新1:
这是我的web.config错误部分.
<customErrors mode="RemoteOnly" defaultRedirect="~/Error" />
Run Code Online (Sandbox Code Playgroud)
我也在用HandleErrorAttribute.
我怀疑IIS正在返回空白页而不是ASP.NET,但我不确定如何证明这一点.
更新2:
这是有趣的.如果我刷新空白页面,我看到ASP.NET Access被拒绝消息.
我只为Admin创建了一个控制器,我添加:
[Authorize(Roles = "Admin")]
Run Code Online (Sandbox Code Playgroud)
在课前定义.当我尝试以管理员身份获取网站作为用户时,我被重定向到LogOn网站.如何将重定向更改为LogOn或向登录站点添加额外信息?