相关疑难解决方法(0)

FormsAuthentication.SignOut()不会将用户注销

对此我砸了太久了.如何防止用户在使用FormsAuthentication.SignOut注销后浏览网站的页面?我希望这样做:

FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.如果我直接输入URL,我仍然可以浏览到该页面.我有一段时间没有使用自己的安全性,所以我忘记了为什么这不起作用.

asp.net forms-authentication

139
推荐指数
8
解决办法
13万
查看次数

如何删除ASP.NET网站上的cookie

在我的网站中,当用户点击"注销"按钮时,Logout.aspx页面会加载代码Session.Clear().

在ASP.NET/C#中,这是否清除了所有cookie?或者是否需要添加任何其他代码才能删除我网站的所有Cookie?

c# asp.net cookies session session-cookies

78
推荐指数
6
解决办法
19万
查看次数

一种在MVC 4应用程序中正确处理HttpAntiForgeryException的方法

这是场景:

我有一个登录页面,当用户签名时,它会被重定向到主页应用程序页面.然后用户使用浏览器后退按钮,现在他在登录页面上.他尝试再次登录,但现在抛出异常:

HttpAntiForgeryException(0x80004005):提供的防伪令牌适用于用户"",但当前用户是"userName".

我知道这与缓存有关.我使用自定义NoCache过滤器禁用了浏览器缓存以进行登录操作,该过滤器设置了所有必需的标头 - 无缓存,无存储,必须重新验证等.但是

  • 这不适用于所有浏览器
  • 特别是Safari(在大多数情况下是移动设备)完全忽略了这样的设置

我将尝试制作黑客并强制Safari移动刷新,但这不是我所期待的.

我想知道我是否可以:

  • 处理异常而不显示用户存在任何问题(对用户完全透明)
  • 通过更换防伪造令牌的用户名防止这个问题,这将再次允许用户登录没有这个例外,如果我涉及到浏览器的缓存黑客会在浏览器的下一个版本中停止工作.
  • 我真的不想依赖浏览器行为,因为每个行为都不同.

更新1

为了澄清一下,我知道如何处理MVC中的错误.问题是这个处理错误根本解决了我的问题.错误处理的基本思想是重定向到自定义错误页面,并带有好消息.但我希望防止发生此错误,而不是以用户可见的方式处理它.通过句柄我的意思是捕获用户名替换或其他合适的操作然后继续登录.

更新2

我添加了下面的解决方案,这对我有用.

c# asp.net-mvc antiforgerytoken

35
推荐指数
3
解决办法
2万
查看次数

MVC AuthenticationManager.SignOut()未注销

我的项目基于Visual Studio 2013的MVC 5项目模板(个人用户帐户选项).我一直依赖于我的用户的默认登录和注销方法.但我不确定我做了什么,在某些时候,用户不能再退出,但他们可以作为另一个用户登录.

这是帐户控制器的默认Logoff方法

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        AuthenticationManager.SignOut();
        return RedirectToAction("Index", "Home");
    }
    private IAuthenticationManager AuthenticationManager
    {
        get
        {
            return HttpContext.GetOwinContext().Authentication;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是显示用户用户名的默认_LoginPartial.cshtml视图.

    @using Microsoft.AspNet.Identity
    @if (Request.IsAuthenticated)
    {
        using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
        {
            @Html.AntiForgeryToken()

            <ul class="nav navbar-nav navbar-right">
                <li>
                    @Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
                </li>
                <li><a    href="javascript:document.getElementById('logoutForm').submit()">Log off</a>            </li>
            </ul>
        }
    }
    else
    {
        <ul …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-identity

12
推荐指数
2
解决办法
2万
查看次数