2015-12-18 35 views
3

我关注此文章https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/为我的MVC应用程序设置Azure身份验证。首先我打开Azure AD提供程序。在身份验证/授权设置中,我选择了“允许请求(无操作)”作为“请求未通过身份验证时执行的操作”,因为我只需要用户登录某些控制器操作。如何设置Azure身份验证自定义登录返回网址?

然后我添加了一个自定义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 /登录/做页说:“你已成功登录“和一个按钮,以返回到我的网站的基本网址。

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

回答

7

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

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

+0

非常感谢!是否有关于此查询字符串参数的文档?没有找到任何关于它的事情。 – bigbearzhu

+0

还没有。我们正在努力... –

+0

很酷。很高兴有一个Azure家伙来回答这个问题!希望参数名称是最终的。 – bigbearzhu

0

谢谢。 这真的很有帮助。 下面的工作确定对我来说:

 return RedirectToAction(string.Format("login/{0}?post_login_redirect_url=/Home/LoginCallBack", provider), ".auth"); 

提供商可以是一个字符串:谷歌,Twitter的,microsoftaccount,AAD,脸谱。

还必须在Azure门户上的项目中配置每个提供程序。

重定向url可能是你项目中的任何uri