我有一个问题,其中我似乎不能通过一个头,当我重定向到另一个页面的用户。该页面需要一个承载令牌能够访问该页面,但是,Redirect
方法只接受URL作为一个参数。
public ActionResult Index()
{
string URL = "www.example.com"
//write a method that redirects to a page passing a bearer token
//response is a JSON object containing an access token from a token server
AccessTokenModel atm = new AccessTokenModel();
atm = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTokenModel>(response);
//this is where I'm stuck as the Redirect parameter only accepts a URL string as parameter
return Redirect(URL, new Request (Headers.Add("Authorization", "Bearer " + atm.access_token)));
}
字符串
2条答案
按热度按时间3mpgtkmj1#
有两种方法可以做到这一点:1-使用您重定向的URL的路由参数。但这不是一种安全的方式,因为用户将在URL中看到不记名令牌。2-您可以创建一个视图,包含一个带有隐藏字段的HTML表单元素,具有不记名令牌的值,然后从操作返回视图。在视图中,你可以在document.ready()事件处理器中使用简单的JavaScript代码自动提交表单。目标页面必须读取提交到的数据,以便它可以读取和解析令牌。3-如果您要重定向的URL位于同一个身份验证和授权子系统上,例如SSO(单点登录),您应该将页面重定向到SSO,并在身份验证后指定返回URL。因此,它将自动验证并将用户重定向到具有目的地所需的验证和授权数据的目的地URL。
对于#2:
字符串
jyztefdp2#
该页面需要一个Bearer令牌才能访问该页面,然而,Redirect方法只接受URL作为参数。
除了上面的过程已经显示了另一个贡献者,首先我们应该看看你的外部页面请求格式看起来像.我的意思是,它会更好,如果你能分享你的外部页面reuqest接受参数或请求头.
例如,如果它允许显式的httpClient请求,那么我们可以发送一个带有所需头部的HttpClient请求沿着。
您可以尝试以下操作:
字符串
**注意:**如果端点允许我们显式发送http请求,我们可以尝试这种方式。请确保http动词。
另一个额外的,方法,你可以考虑的是,IIS自定义请求头.这种头也可以使用IIS服务器配置以及.我建议你检查this official document for more details .