Asp.net mvc 你如何实施一个;注销“;使用ASP.NET MVC链接?
这似乎是一个相当愚蠢的问题,但我正试图找出最好的方法。您是否可以直接重定向到a/Logout页面,让控制器调用FormsAuthentication.SignOut函数Asp.net mvc 你如何实施一个;注销“;使用ASP.NET MVC链接?,asp.net-mvc,forms-authentication,Asp.net Mvc,Forms Authentication,这似乎是一个相当愚蠢的问题,但我正试图找出最好的方法。您是否可以直接重定向到a/Logout页面,让控制器调用FormsAuthentication.SignOut函数 这是我的第一个想法,但后来我想知道它是否会被第三方网站滥用。假设有人决定发布一个链接到你的/注销页面。用户将从您的应用程序中注销。有什么好方法可以防止这种情况发生吗?你应该寻找一个cookie或一些能将客户识别为真正用户的东西。你应该寻找一个cookie或一些能将客户识别为真正用户的东西。这就是我使用的 public Actio
这是我的第一个想法,但后来我想知道它是否会被第三方网站滥用。假设有人决定发布一个链接到你的/注销页面。用户将从您的应用程序中注销。有什么好方法可以防止这种情况发生吗?你应该寻找一个cookie或一些能将客户识别为真正用户的东西。你应该寻找一个cookie或一些能将客户识别为真正用户的东西。这就是我使用的
public ActionResult Logout()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
看起来很好用
第三方网站只会自己注销。因此,他们不会实现任何与实际单击注销不同的功能。这就是我使用的功能
public ActionResult Logout()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
看起来很好用
第三方网站只会自己注销。因此,他们与实际单击注销没有什么不同。如果您担心用户通过使用恶意链接意外从您的应用程序中注销,您可以检查推荐人以确保注销来自您的站点(如果用户只是在中键入URL,则为NULL)
实际上,我并不担心这一点,因为注销某人很烦人,但不一定会带来安全风险。如果您担心某个用户通过使用恶意链接意外注销您的应用程序,您可以检查推荐人,以确保注销来自您的站点(如果用户只是在中键入URL,则为NULL)
事实上,我并不担心这一点,因为注销某人很烦人,但不一定会带来安全风险。这样的恶意链接就是一类安全漏洞的例子,称为跨站点请求伪造CSRF。注销链接相对无害,但远程站点可以设置许多隐藏表单并发布它们到您的站点,通过POST执行任何可能的操作 最常见的应对措施是在每个表单中包含一个质询,一个随机隐藏的值,然后检查该值。检查referer头可以工作,但请注意,一些浏览器根本不发送referer
阅读更多信息:此类恶意链接可能是一类称为跨站点请求伪造(CSRF)的安全漏洞的示例。注销链接相对无害,但远程站点可以设置大量隐藏表单,并将其发布到您的站点,以通过post执行任何可能的操作 最常见的应对措施是在每个表单中包含一个质询,一个随机隐藏的值,然后检查该值。检查referer头可以工作,但请注意,一些浏览器根本不发送referer
阅读更多信息:新的ASP.net MVC测试版包含一个AccountController,这可能值得一看,因为它基本上实现了从注册到登录/注销到忘记密码的所有功能。不确定它有多好,但肯定是一个很好的起点。新的ASP.net MVC测试版包含一个AccountController,它可以值得一看,因为它基本上实现了从注册到登录/注销到忘记密码的所有功能。不确定它有多好,但肯定是一个很好的起点。源自ActionResult
public class LogoutResult : ActionResult
{
private readonly IAuthenticationService _authenticationService;
private readonly IWebContext _context;
public LogoutResult(IAuthenticationService authenticationService, IWebContext context)
{
_authenticationService = authenticationService;
_context = context;
}
public override void ExecuteResult(ControllerContext context)
{
_authenticationService.Logout();
_context.Abandon();
_context.Redirect("~/");
}
}
从ActionResult派生
public class LogoutResult : ActionResult
{
private readonly IAuthenticationService _authenticationService;
private readonly IWebContext _context;
public LogoutResult(IAuthenticationService authenticationService, IWebContext context)
{
_authenticationService = authenticationService;
_context = context;
}
public override void ExecuteResult(ControllerContext context)
{
_authenticationService.Logout();
_context.Abandon();
_context.Redirect("~/");
}
}
这是一个老问题,但这里有一个MVC的现代示例:
[Authorize]
public RedirectResult Logout()
{
FormsAuthentication.SignOut();
return this.Redirect("/");
}
您可以通过对
注销
操作应用授权
属性来确保只有登录的人才能调用该操作。这是一个老问题,但这里有一个MVC的现代示例:
[Authorize]
public RedirectResult Logout()
{
FormsAuthentication.SignOut();
return this.Redirect("/");
}
您可以确保
注销
操作只能由登录的人通过对其应用Authorize
属性来调用。这会有什么帮助?用户在单击链接时仍然会注销。使用任何语言构建的web应用程序在注销时不存在此问题吗nvolves是否要转到某种类型的注销页面?您可以检查推荐人并确保用户来自同一个域,但这并不总是可靠的。这会有什么帮助?用户在单击链接时仍然会注销。对于任何使用任何语言构建的web应用程序,如果注销涉及到g,是否存在此问题转到某种类型的注销页面?你可以检查推荐人并确保用户来自同一个域,但这并不总是可靠的。因此,假设你的应用位于,并且你的注销页面位于。如果第三方网站发布了指向的链接,则任何登录到你的应用并单击该链接的用户都将注销,对吗?你能检查一下它是否是MVC中的回发吗?如果是,那么就注销,否则就重定向到索引视图?@kevin,只有第三方应用程序才会注销。当前使用你的应用程序的用户在自己单击之前都不会被注销。@标记你只能允许对控制器的GET请求。如果你的站点的其余部分正在使用较旧的aspx功能,而您正试图在其上实现MVC登录/注销界面?目前,我的登录页面MVC项目没有索引或主视图。该网站的主页是另一个非MVC项目中的aspx页面,因此,当用户注销时,我希望重定向到登录视图,并在其上显示返回URL,以便将他们带到当他们重新登录时,home.aspx将显示另一个项目。现在我正在尝试FormsAuth.SignOut,然后返回RedirectToAction(“登录”,“帐户”);但是,如果用户尝试再次登录,它只会将他们保留在登录视图OK,要回答我的查询,您只需在注销后重定向到您的主aspx页面,这样它就可以强制完成登录视图并正确返回