ASP MVC5 Identity 2.0后端和前端登录



我正在开发一个项目,其中我有一个后台办公区(管理区),用于配置系统,还有一个前台办公区,供典型用户进行业务。

也就是说,应用程序需要有一个后台登录和另一个前台登录。每一种都必须分开。

我使用Asp Identity 2.0开发了一个后台和前台登录和注册的不同区域,工作得很好。

例如,后台区域可以使用"myuser"用户名,前台区域可以使用"myuser"用户名,因为每个用户名保存在不同的表中。

我已经开发了一个自定义区域授权来管理这个

我的问题是,当一个用户登录到后台区域,如果他去前厅区域,他仍然报告已经登录…

如何区分用户。每个区域的身份登录?

提前感谢!!

采用的解决方案:

1)创建Front Office授权属性和BO授权属性,用于管理FO/BO登录页面:

public class AreaAuthorizeAttribute : AuthorizeAttribute
{
    private readonly string area;
    public AreaAuthorizeAttribute(string area)
    {
        this.area = area;
    }
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        RouteValueDictionary values;
        if (!string.IsNullOrEmpty(area))
        {
            values = new RouteValueDictionary(new
            {
                Area = area,
                Controller = "Account",
                Action = "Login"
            });
        }
        else
        {
            values = new RouteValueDictionary(new
            {
                Area = "Frontoffice",
                Controller = "Account",
                Action = "Login"
            });
        }
        filterContext.Result = new RedirectToRouteResult(values);
    }
}

第二部分

管理BO和FO之间的身份,即始终通过User获取。根据您所在的区域标识正确的标识,在Global.asax

中创建此方法。
 protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        if (Request.IsAuthenticated)
        {
            var user = (System.Security.Claims.ClaimsPrincipal)User;
            if (user.Identities.Count() > 1)
            {
                if (HttpContext.Current.Request.Url.ToString().Contains("Frontoffice"))
                {
                    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(user.Identities.First(), new string[] { "Admin" });
                }
                else
                {
                    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(user.Identities.ElementAt(1), new string[] { "Admin" });
                }
            }
        }
    }

只要将if(request . isauthenticfacted)更改为您在管理用户身份和BBBBOOOMMMM时想做的任何事情:)

相关内容

  • 没有找到相关文章

最新更新