相关疑难解决方法(0)

如何在ASP.NET MVC中实现自定义Principal和Identity?

我想在经过身份验证的用户中存储额外的信息,以便我可以轻松访问它(例如User.Identity.Id),而不仅仅是名称,因为我计划让它具有非唯一性.

到目前为止,我已经收集到了我应该寻求实现自定义Principal和/或Identity,但我不确定如何去实现它.我一直在寻找有关此事的文档和教程,但我在不同的地方找到了相关的东西,我发现它有点令人困惑.

我已经看到了如何将自定义信息添加到用户数据属性中的身份验证cookie,但我希望获得单元测试的依赖注入的好处,我可以使用主体和身份.

如果我想实现自己的Principal或Identity,我需要考虑哪些确切的步骤?

在这种情况下我能做的最简单的事情是什么(只需添加ID并保留所有默认值)?"默认值"将包括默认提供者(成员资格,角色等).

我已经看到了另一个问题,但我很欣赏不会在两者之间留下任何漏洞的答案,例如示例中AuthenticateRequest事件中的角色魔术字符串.相反,我需要知道如何将默认SqlRoleProvider中的角色添加到当前用户:何时何地执行此操作,以及是否需要执行任何其他操作以将新类与其他默认提供程序连接.

能够转到示例ASP.NET MVC 2应用程序(例如,来自visual studio 2010模板),进行编辑并使其工作是非常棒的.


编辑:我已经编辑了这个问题,以便更好地表明我在这里已经失去了很多,所以我无法用太高的答案来做.

PS:在我看来,在身份而不是校长中使用ID会更有意义,尽管我在某种程度上已经说过这个.

identity forms-authentication principal asp.net-mvc-2

16
推荐指数
1
解决办法
2万
查看次数

MVC Windows身份验证 - 授权(权限)整个站点

我已经看到AuthoriseAttribute可以为每个单独的控制器工作,我想要做的是将整个站点权限设置为一个AD组,这很容易做或者我应该只将authattrib行复制并粘贴到每个控制器?

谢谢

asp.net-mvc authorization

2
推荐指数
1
解决办法
175
查看次数

同时使用app.UseOpenIdConnectAuthentication时不使用CookieAuthenticationOptions.LoginPath值

我正在使用OWIN中间件进行Cookie身份验证和openIdConnect。在向cookie身份验证选项的启动身份验证代码中添加openIdConnect身份验证之前,LoginPath被用作重定向未经身份验证的用户的目标。这确实很好,并且是我想保留的功能。

但是,当我将app.UseOpenIdConnectAuthentication添加到我的项目时,它开始自动将未经身份验证的用户重定向到我的OpenIdConnect授权(https://login.windows.net/)。

有没有一种方法可以禁用OpenIdConnectAuthentication设置未经身份验证的用户的重定向路径,并依靠LoginPath设置Cookie身份验证?我目前的解决方法是在我的authorize属性中手动设置重定向路径,但是我想让OWIN中间件在可能的情况下进行处理。

谢谢。

码:

public void ConfigureAuth(IAppBuilder app)
    {
        // Enable the application to use a cookie to store information for the signed in user
        // and to use a cookie to temporarily store information about a user logging in with a third party login provider
        var cookieOptions = new CookieAuthenticationOptions();
        cookieOptions.AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie;
        cookieOptions.LoginPath = new PathString("/Account/Login");

        app.SetDefaultSignInAsAuthenticationType(cookieOptions.AuthenticationType);

        app.UseCookieAuthentication(cookieOptions);

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        {
            AuthenticationType = FranchiseAuthType,
            ClientId = franchiseClientId,
            Authority = FranchiseAuthority,
            PostLogoutRedirectUri = postLogoutRedirectUri,
        });
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc owin azure-active-directory openid-connect

2
推荐指数
1
解决办法
3158
查看次数