为什么未在MVC 4中设置我的身份验证Cookie?

qua

我有一个正在开发的MVC4项目。当用户的登录凭据有效时,我会调用FormsAuthentication.SetAuthCookie()以指示该用户已登录。(我将其包装在一个类中,以便可以为自己的单元测试模拟接口。)

namespace FlashMercy.Shared.Security
{
    using System;
    using System.Web.Security;

    public class Auth : IAuth
    {
        public void SetAuthCookie(string userId, bool remember)
        {
            FormsAuthentication.SetAuthCookie(userId, remember);
        }

        public void Signout()
        {
            FormsAuthentication.SignOut();
        }
    }
}

在调试器中,我可以确认该.SetAuthCookie(userId, remember)行正在执行并且userId 已被填充。

然后,我有一个自定义的授权属性来检查用户是否已登录:

namespace FlashMercy.Shared.Security
{
    using System.Web.Mvc;

    public class FlashMercyAuthorizeAttribute : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                filterContext.Result = new RedirectResult("/");
            }
        }
    }
}

当我调试应用程序时,即使在我已经设置了auth cookie之后,它filterContext.HttpContext.User.Identity.IsAuthenticated仍然是false另外,filterContext.HttpContext.User.Identity.Name为空。我不确定我在这里缺少什么。

更新资料

如果您希望查看整个源代码,可以在GitHub上找到它:https : //github.com/quakkels/flashmercy

谢尔盖·利特维诺夫(Sergey Litvinov)

代码的问题是您正在使用FormsAuthentication,但没有将其添加到web.config。您的web.config应该包含以下部分:

<system.web>
    <authentication mode="Forms"></authentication>
    ...
</system.web>

基于这种模式Asp.Net了解认证模式应该使用,如窗体,Windows等而且没有设置它Forms的值-FormsAuthenticationModule只是忽略.ASPXAUTH饼干从请求。

PS。我已经下载了您的代码,并且在web.config中具有正确的身份验证部分,它可以正常工作并更新HttpContext.User.Identity.IsAuthenticated为true。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么未在MVC 4中设置我的身份验证cookie?

来自分类Dev

MVC4 - 在表单身份验证票中设置自定义用户数据会导致表单身份验证 cookie 未设置?

来自分类Dev

未在MVC 5中使用Owin在浏览器中设置身份验证cookie

来自分类Dev

ASP.NET MVC中的身份Cookie身份验证

来自分类Dev

为什么未在Express中设置cookie?

来自分类Dev

为什么身份验证Cookie对[Authorize]属性无效?

来自分类Dev

在同一MVC应用程序中同时使用OWIN Cookie身份验证和Windows身份验证

来自分类Dev

在开发人员中运行时未在Google Chrome中设置ASP.net核心身份验证Cookie

来自分类Dev

为什么我不能从获取身份验证令牌错误的模块中模拟功能?

来自分类Dev

为什么我需要在本教程中配置身份验证/授权

来自分类Dev

为什么未在此组件中设置我的状态

来自分类Dev

为什么我的API仍需要身份验证?

来自分类Dev

为什么我的apache身份验证不起作用?

来自分类Dev

为什么未在Javascript中保存cookie?

来自分类Dev

Windows身份验证和ASP.NET MVC 4中的表单身份验证的混合

来自分类Dev

MVC 4 Windows 身份验证

来自分类Dev

MVC .NET cookie身份验证系统通过令牌身份验证访问Web Api

来自分类Dev

为什么我的验证器未在Laravel中进行验证?

来自分类Dev

ASP.NET MVC 4中具有ASPNET身份的基于角色的身份验证

来自分类Dev

为什么在Spring Security中对“ anonymousUser”进行身份验证?

来自分类Dev

为什么数组未在Ruby中修改?

来自分类Dev

为什么表未在phpmyadmin中创建

来自分类Dev

为什么表未在mysql中更新

来自分类Dev

为什么未在字段上设置验证指令/属性?

来自分类Dev

MVC身份验证依赖什么身份验证?

来自分类Dev

MVC Owin Cookie身份验证-覆盖ReturnUrl生成

来自分类Dev

MVC 5中的身份验证

来自分类Dev

MVC中的身份验证和授权

来自分类Dev

为什么先在MVC代码中迁移后未在sql数据库中创建新表

Related 相关文章

  1. 1

    为什么未在MVC 4中设置我的身份验证cookie?

  2. 2

    MVC4 - 在表单身份验证票中设置自定义用户数据会导致表单身份验证 cookie 未设置?

  3. 3

    未在MVC 5中使用Owin在浏览器中设置身份验证cookie

  4. 4

    ASP.NET MVC中的身份Cookie身份验证

  5. 5

    为什么未在Express中设置cookie?

  6. 6

    为什么身份验证Cookie对[Authorize]属性无效?

  7. 7

    在同一MVC应用程序中同时使用OWIN Cookie身份验证和Windows身份验证

  8. 8

    在开发人员中运行时未在Google Chrome中设置ASP.net核心身份验证Cookie

  9. 9

    为什么我不能从获取身份验证令牌错误的模块中模拟功能?

  10. 10

    为什么我需要在本教程中配置身份验证/授权

  11. 11

    为什么未在此组件中设置我的状态

  12. 12

    为什么我的API仍需要身份验证?

  13. 13

    为什么我的apache身份验证不起作用?

  14. 14

    为什么未在Javascript中保存cookie?

  15. 15

    Windows身份验证和ASP.NET MVC 4中的表单身份验证的混合

  16. 16

    MVC 4 Windows 身份验证

  17. 17

    MVC .NET cookie身份验证系统通过令牌身份验证访问Web Api

  18. 18

    为什么我的验证器未在Laravel中进行验证?

  19. 19

    ASP.NET MVC 4中具有ASPNET身份的基于角色的身份验证

  20. 20

    为什么在Spring Security中对“ anonymousUser”进行身份验证?

  21. 21

    为什么数组未在Ruby中修改?

  22. 22

    为什么表未在phpmyadmin中创建

  23. 23

    为什么表未在mysql中更新

  24. 24

    为什么未在字段上设置验证指令/属性?

  25. 25

    MVC身份验证依赖什么身份验证?

  26. 26

    MVC Owin Cookie身份验证-覆盖ReturnUrl生成

  27. 27

    MVC 5中的身份验证

  28. 28

    MVC中的身份验证和授权

  29. 29

    为什么先在MVC代码中迁移后未在sql数据库中创建新表

热门标签

归档