asp.net 身份多用户登录



嗨,我想知道是否可以使用 asp.net 身份在同一 Web 应用程序中为两个不同站点提供多个登录页面

例如,有管理员登录页面和普通用户登录页面。一旦用户已经登录到管理员。用户还允许在不注销管理站点的情况下再次登录到普通用户页面。顺便说一句,用户名会有两个区别

有人知道如何做吗?这是对 asp.net 身份的限制,只允许整个 asp.net 中的一个登录页面吗?

谢谢

迟到,但可能会帮助某人。根据Pinpoint Answer对类似问题的回答,您可以在具有自定义功能的Startup类中执行以下操作:

    using System;
    using Microsoft.AspNet.Identity.Owin;
    using Microsoft.Owin;
    using Microsoft.Owin.Security.Cookies;
    using Owin;
    using Microsoft.AspNet.Identity;

然后将"重定向如果管理员"添加到提供程序

public partial class Startup {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
        // Basic for site guest
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            LogoutPath = new PathString("/Account/Logout"),
            Provider = new CookieAuthenticationProvider {
                OnApplyRedirect = RedirectIfAdmin,
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
   }

并实现它以捕获任何字符串或参数

    private static void RedirectIfAdmin(CookieApplyRedirectContext context)
    {
        // If Url contains 
        Uri absoluteUri;
        if (Uri.TryCreate(context.RedirectUri, UriKind.Absolute, out absoluteUri))
        {
            string path = context.Request.PathBase + context.Request.Path + context.Request.QueryString;
            if (path.Contains("/administration")) { 
                context.RedirectUri = "/administration/login.aspx" +
                new QueryString(context.Options.ReturnUrlParameter, context.Request.Uri.AbsoluteUri);
            }
        }
        context.Response.Redirect(context.RedirectUri);
    }

如果您想使用管理员帐户登录,下次使用用户帐户登录,您可以使用其他浏览器或私人模式访问该网站。我不知道你想做什么,但如果只是为了测试,你可以这样做。

相关内容

  • 没有找到相关文章

最新更新