描述
在我的移动应用程序中,用户尝试访问需要身份验证的资源。
登录并获取访问令牌后,我想将它们重定向到最初请求的页面(返回URL)。
问题
在基于令牌的身份验证中,如何重定向到返回网址?
示例
考虑这种情况:
1 - 我的移动应用程序“我的个人资料”中有一个菜单,可以打开 WebView 并导航到mycoolwebsite.com/myprofile
。
2 - 服务器(MVC控制器)使用returnUrl重定向到登录页面,如URL中所示。 mycoolwebsite.com/login?returnUrl='/myprofile'
因为用户无法登录而无法访问mycoolwebsite.com/profile
。
3 - 用户看到登录页面,他们输入用户名和密码,然后按“登录”按钮。
4 - POST
请求将发送到ASP.NET应用程序的_Token Endpoint _,包括用户名和密码以及grant_type
的{{1}}
5 - 服务器验证凭据,并发出令牌。它会将令牌作为JSON对象发送回客户端。
问题:获取令牌后,我需要将用户重定向回原来请求的password
。
在ASP.NET MVC应用程序中,这会自动发生在MVC模板中。
但是在WebAPI中,我不确定这样做的正确方法是什么。
答案 0 :(得分:2)
使用Cookie身份验证,其工作方式如下:
mycoolwebsite.com/login?returnUrl='/myprofile'
承载令牌身份验证(最有可能是您的情况)
用户填写登录表单并向mycoolwebsite.com/token
发送Ajax请求
如果身份验证成功,服务器将回复 200 OK 状态代码并返回accessToken。
然后,客户端读取响应正文并存储accessToken以供进一步使用。现在取决于你。您可以从URL读取returnUrl参数并将用户重定向到mycoolwebsite.com/myprofile
。
因此,这两者之间的区别在于重定向发生在服务器端(通过302重定向响应)或客户端。
希望它有所帮助。