C# 重定向到登录后重定向回位置
我在一个ASP.NET4.6WebForms应用程序中 我试图使用索赔检查用户是否有权访问工资单页面,如下所示:C# 重定向到登录后重定向回位置,c#,asp.net,webforms,asp.net-identity-2,C#,Asp.net,Webforms,Asp.net Identity 2,我在一个ASP.NET4.6WebForms应用程序中 我试图使用索赔检查用户是否有权访问工资单页面,如下所示: protected void Page_Load(object sender, EventArgs e) { if (!ContainsClaim(User.Identity.Name, "role", "admin")) { //execute function 1 Response.R
protected void Page_Load(object sender, EventArgs e)
{
if (!ContainsClaim(User.Identity.Name, "role", "admin"))
{
//execute function 1
Response.Redirect("Account/Login.aspx");
}
}
public bool ContainsClaim(string userName, string claimType, string claimValue)
{
ApplicationDbContext context = new ApplicationDbContext();
var user = context.Users.Where(s => s.UserName == "rsadmin").FirstOrDefault();
if (user == null)
{
return false;
}
return user.Claims.Where(s => s.ClaimType == claimType && s.ClaimValue == claimValue).Count() > 0;
}
工资单用户在登录前单击工资单页面。所以她被重定向到登录页面。如何在登录后自动将他们引导回工资单页面?有几个选项 您可以使用returnUrl的查询参数,登录时可以使用该参数重定向。如果您确实使用了查询参数,请确保在重定向之前,returnUrl实际上已设置为站点上的url;否则,你的页面可能会被黑客用来让用户访问恶意网站 另一个选项是使用会话(如果可用)存储有关用户试图访问的内容的信息,并从会话变量重定向
protected void Page_Load(object sender, EventArgs e)
{
if (!ContainsClaim(User.Identity.Name, "role", "admin"))
{
//execute function 1
Response.Redirect("Account/Login.aspx?ReturnUrl="+HttpUtility.UrlEncode(Request.Url.PathAndQuery));
}
}
要检查页面是否位于同一服务器上,请执行以下操作:
var redirUrl = HttpUtility.UrlDecode(Request["ReturnUrl"]);
if(!string.IsNullOrWhiteSpace(redirUrl)){
var mappedPath = Page.MapPath(redirUrl.Trim());
if(File.Exists(mappedPath)){
Response.Redirect(redirUrl.Trim());
}
}
您可以将重定向url作为参数添加到登录重定向中,并在登录后将其拉回到重定向
protected void Page_Load(object sender, EventArgs e)
{
if (!ContainsClaim(User.Identity.Name, "role", "admin"))
{
//get current url
string url = HttpContext.Current.Request.Url.AbsoluteUri;
//execute function 1
Response.Redirect("Account/Login.aspx?returnurl=" + url);
}
}
然后,您可以通过以下方式在登录页面上读取此url:
string returnurl = Response.QueryString("returnurl")
如果参数不是空的,则在您的登录方法中重定向到它。I如果您要使用“正常”的身份验证用户检测,则aspnet会将您重定向到登录页面,并将上一页作为returnUrl
querystring参数。但是您可以自己将其添加到重定向中,在登录后检查并重定向用户。