在ASP.Net MVC中使用OpenIdConnect进行身份验证后重定向用户

用户3731783

我正在Owin / Katana中使用OpenIdConnect提供程序在asp.net mvc应用程序中进行身份验证。OpenIdConnect Provide通过Active Directory对用户进行身份验证。一旦用户通过身份验证,我想做一个简单的授权检查,然后将用户重定向到另一个视图。

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions()
        {
            Authority = "url",
            Scope="scopes",
            ResponseType = "response",
            ClientId = "clientid",
            SignInAsAuthenticationType = "Cookies",
            Notifications = new OpenIdConnectAuthenticationNotifications()
            {
                SecurityTokenValidated = (context) =>
                {
                    var identity = context.AuthenticationTicket.Identity;
                    var emailClaim = identity.Claims.Where(r => r.Type == ClaimTypes.Email).FirstOrDefault();

                    var user = dbContext.Users.Where(u=>u.Email==emailClaim.Value);
                    if (user != null)
                    {
                        //add user information to claims.
                        identity.AddClaim(new Claim(CustomClaimTypes.PersonId, user.Name.ToString()));
                    }
                    else
                    {
                        //redirect to a page 
                    }

                    return Task.FromResult(0);
                }
             }
        });

如果该用户不在我的数据库中,该如何重定向该用户。

用户3731783

通过编写自定义AuthorizeAttribute并将其用于应用程序中的每个类,我能够实现这一目标。在自定义授权属性中,我正在检查Claim,如果授权检查成功,该索赔将可用;如果未授权,则将用户重定向到单独的视图。

public class CustomAuthorize : AuthorizeAttribute
{
    public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        if (filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            if(UserClaims.PersonId == 0)
            {
                UrlHelper helper = new UrlHelper(filterContext.RequestContext);

                string url = helper.Action("Unauthorized","Error",null,filterContext.HttpContext.Request.Url.Scheme);

                filterContext.Result = new RedirectResult(url);
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用身份对ASP.NET MVC中的用户进行身份验证

如果ASP.NET MVC中的用户匿名,则重定向到自定义Windows身份验证登录页面

ASP .NET MVC在工作期间进行身份验证并保持用户身份验证的最佳实践

重定向到属性登录,使用ASP.NET 5中的cookie身份验证进行授权

身份验证后将ASP.Net重定向到本地主机

ASP.Net MVC 6 + WebAPI身份验证-将MVC重定向到登录,但如果使用WebAPI,则重定向401

[Authorize]属性如何知道用户在ASP.NET MVC中已通过身份验证令牌进行身份验证?

在Asp.Net Core中使用旧版用户表进行自定义身份验证

在ASP.NET中对Oracle用户进行身份验证

如何在ASP.NET MVC 4中使用SimpleMembershipProvider拒绝所有通过身份验证的用户访问

ASP.NET MVC 4用户身份验证

通过对用户进行身份验证,使用 ASP.NET MVC 应用程序访问 Azure 订阅信息

在ASP.NET MVC5中使用自定义登录进行表单身份验证

在本地开发环境中使用 ASP.NET MVC 5 通过 Active Directory 进行身份验证

在Azure AD身份验证后如何重定向到ASP Net Core MVC中的其他控制器操作

asp.net身份通过链接/ URL进行身份验证asp.net mvc 5

Asp.net Identity 2.0-根据登录时的角色重定向经过外部身份验证的用户

检查用户是否在ASP.NET Core中使用基于令牌的身份验证登录

使用Restful asp.net Web API进行用户登录身份验证并保护API

在ASP.NET中使用Windows身份验证

使用asp.net进行Windows身份验证

使用Shibboleth的asp.net MVC身份验证

在 ASP.NET Core 2 中使用令牌或 Open ID Connect 进行身份验证

在ASP.NET MVC 4应用程序中的身份验证中使用会话变量

使用ASP.NET MVC中的活动目录进行身份验证

使用Windows身份验证的.Net MVC 4-重定向未经授权的用户

ASP.Net Core-API身份验证错误上没有重定向

如果未通过身份验证,重定向到登录屏幕 - ASP.NET Core 2.2

ASP.NET表单身份验证-不重定向到任何页面