如何设置Azure身份验证自定义登录返回URL?

时间:2015-12-18 03:50:47

标签: asp.net asp.net-mvc authentication azure-web-sites

我按照本文https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/为我的MVC应用设置了Azure身份验证。首先,我打开了Azure AD提供程序。在身份验证/授权设置中,我为“请求未经过身份验证时采取的操作”选择了“允许请求(无操作)”,因为我只需要用户登录某些控制器操作。

然后我添加了一个自定义FilterAttribute来检查一个操作是否需要在https://stackoverflow.com/a/26652816/1837339中进行身份验证。在OnAuthenticationChallenge函数中,我将此代码重定向到登录页面:

public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
    if (filterContext.Result is HttpUnauthorizedResult) {
        filterContext.Result = new RedirectResult("~/.auth/login/aad");
    }
}

所有这一切都有效,除非用户完成身份验证后,它会被重定向回mysite / .auth / login / done页面,说“你已经成功登录”,并有一个按钮返回我网站的基本网址。

我想要的是重定向会回到用户的原始网址,所以我想我需要以某种方式为登录重定向设置返回网址。但我找不到任何关于此的文件。有人可以提出任何建议吗?

2 个答案:

答案 0 :(得分:8)

您可以使用 post_login_redirect_url 查询字符串参数执行此操作。

例如,如果您想在登录后自动将用户导航到 /welcome.html ,则可以将登录重定向设置为〜/ .auth / login / aad?post_login_redirect_url = / welcome.html ,用户将被重定向到此页面,而不是通用的欢迎页面。

答案 1 :(得分:0)

谢谢。 这确实有帮助。 以下对我有用:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36

提供商可以是一个字符串:google,twitter,microsoftaccount,aad,facebook。

此外,必须在Azure门户的项目上配置每个提供程序。

重定向网址可能是您项目中的任何内容