Sac*_*nth 2 web-config razor c#-4.0 asp.net-mvc-3-areas asp.net-mvc-3
我有一个MVC3站点,有一个管理站点和一个面向公众的站点.这些控制器,视图,模型等都在同一个MVC项目中.它们是分开的:管理站点位于名为Admin的MVC3区域中,面向公众的站点不属于某个区域,但存在于顶层.管理站点具有"登录"视图,公共站点也具有"登录"视图.在我的web.config文件中,我有:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogIn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
现在,如果我访问公共站点中需要身份验证的任何页面,我会进入公共站点的登录页面,这很棒.但是,如果我访问管理区域中需要身份验证的任何页面,那么我将再次进入公共站点的登录页面.那么问题是如何确保如果我在管理区域中需要身份验证的页面上,我会被发送到管理员登录页面?
当需要本地化登录页面时,我遇到了类似的问题.我创建了一个自定义Authorize属性:
public class CustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectToRouteResult(
new System.Web.Routing.RouteValueDictionary
{
{ "language", filterContext.RouteData.Values[ "language" ] },
{ "controller", "Account" },
{ "action", "LogOn" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
只需使用此属性而不是默认的Authorize属性.在您的情况下,您可以检查请求网址,并根据该重定向到相应的登录页面.
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |