ASP MVC中的自定义角色提供程序

卡洛斯·米格尔·科兰塔(Carlos Miguel Colanta)

你好,我有点迷失在这里,我不知道该怎么解决:

问题是,我的应用程序仍未检测到分配角色就像我有类似的东西一样[Authorize(Roles="user")]它不会检测到我的登录信息,也不允许我继续该视图。

我一直在关注一个糟糕的教程,到目前为止,这是我必须要做的:(我想至少在进入另一个教程之前首先做到这一点)

这是我的数据库表:

为了简单起见,我没有添加任何哈希:

登录表

在此处输入图片说明

角色表

在此处输入图片说明

我用inner join,我会得到这样的东西

select A.username, A.role from login A INNER JOIN roles B on A.role = B.id

在此处输入图片说明

我首先使用代码EF 4.0,这是我的代码段:

我有一个roleprovider继承自的类roleprovider

我只实现了2种方法,分别是:GetRolesForUserIsUserInRole

GetRolesForUser

public override string[] GetRolesForUser(string uname)
    {
        if (!HttpContext.Current.User.Identity.IsAuthenticated)
        {
            return null;
        }

        var cacheKey = string.Format("{0_role}", uname);
        if (HttpRuntime.Cache[cacheKey] != null)
        {
            return (string[])HttpRuntime.Cache[cacheKey];
        }

        string[] roles = new string[] { };
        using (EmployeeContext emp = new EmployeeContext())
        {
            roles = (from a in emp.login
                     join b in emp.roles on a.role equals b.id
                     where a.username.Equals(uname)
                     select b.role).ToArray<string>();
            if (roles.Count() > 0)
            {
                HttpRuntime.Cache.Insert(cacheKey, roles, null, DateTime.Now.AddMinutes(_cacheTimeoutInMinute), Cache.NoSlidingExpiration);
            }
        }
        return roles;
    }

IsUserInRole

public override bool IsUserInRole(string uname, string roleName)
{
     var userRoles = GetRolesForUser(uname);
     return userRoles.Contains(roleName);
}

Web配置

<roleManager>
  <providers>
    <clear/>
    <add name="roleprovider"  type="MvcApplication6.Helper.roleprovider"/>
  </providers>
</roleManager>

对于目前无法正确解释代码,我深表歉意,因为我仍在学习中。到目前为止,我的主要工作是使代码首先工作,但由于我不确定自己所缺少的内容,我莫名其妙地迷路了。

问题的重述:-应用程序不会从数据库中检测角色,并且如果我尝试登录,也不会让我继续。

编辑:这是我的登录代码(我已实施身份验证模式)

   [HttpGet]
    [ActionName("login")]
    public ActionResult login_load()
    {
        return View();
    }

    [HttpPost]
    [ActionName("login")]

    public ActionResult login_post(string uname,string pword)
    {
        using (EmployeeContext emp = new EmployeeContext())
        {

            int success = emp.login.Where(x => x.username == uname && x.password == pword).Count();
            if (success == 1)
            {
                FormsAuthentication.SetAuthCookie(uname, false);

                return RedirectToAction("Details", "Enrollment");
            }
            return View();
        }
    }

查看您发布的代码的一些技巧。

您的web.config看起来应该像这样:

<roleManager enabled="true" defaultProvider="roleprovider">
  <providers>
    <clear/>
    <add name="roleprovider"  type="MvcApplication6.Helper.roleprovider"/>
  </providers>
</roleManager>

即,您需要将自定义角色提供程序声明为默认提供程序。

您可以从GetRolesForUser方法中删除以下内容

if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
    return null;
}

此方法的目的是获取作为参数传递的用户名的角色-不应与当前用户有关。

如果这不起作用,请尝试在您的GetRolesForUser方法中放置一个断点

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有ASP.net MVC的自定义角色提供程序-更改角色

来自分类Dev

ASP.NET MVC自定义角色提供程序不起作用

来自分类Dev

具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

来自分类Dev

基于ASP.NET MVC中角色的自定义用户授权

来自分类Dev

在ASP.NET MVC和Azure AD中创建自定义用户角色

来自分类Dev

在ASP.NET MVC 5中将自定义角色添加到Windows角色

来自分类Dev

ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

来自分类Dev

创建我的自定义安全角色和自定义用户组表,以实现对asp.net mvc Web应用程序的自定义授权

来自分类Dev

如何使ASP.net MVC 5中的自定义分页取决于引导程序?

来自分类Dev

ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

来自分类Dev

ASP.NET MVC 4-自定义成员资格和角色实体未更新

来自分类Dev

ASP.NET MVC中的自定义JSON结果

来自分类Dev

ASP.NET MVC中的自定义错误页面

来自分类Dev

asp.net core mvc 中的自定义授权

来自分类Dev

如何在ASP.NET Core中的自定义本地化提供程序中注入DbContext?

来自分类Dev

如何使用ASP-5 / MVC-6 / Identity 3为自定义Asp.Net身份存储提供程序注册中间件

来自分类Dev

自定义角色提供程序的授权属性在MVC 5中不起作用

来自分类Dev

使用自定义角色在ASP.NET Identity中初始化RoleManager

来自分类常见问题

C#asp.net身份和自定义角色

来自分类Dev

自定义角色的Asp Net Core 3.1授权

来自分类Dev

C#asp.net身份和自定义角色

来自分类Dev

具有自定义角色的asp.net身份

来自分类Dev

自定义asp.net身份角色声明

来自分类Dev

是否可以在ASP.NET Core中使用自定义ModelState验证提供程序?

来自分类Dev

ASP.NET Identity外部身份验证提供程序自定义图标

来自分类Dev

如何在自定义成员身份提供程序中保存ASP.NET_SessionId

来自分类Dev

自定义ASP.NET身份,OWIN和社交提供程序登录

来自分类Dev

ASP.NET Core 3.1 MVC Access拒绝基于角色的授权-与自定义UserClaimsPrincipalFactory发生冲突

来自分类Dev

自定义验证程序asp.net MVC的客户端验证4

Related 相关文章

  1. 1

    具有ASP.net MVC的自定义角色提供程序-更改角色

  2. 2

    ASP.NET MVC自定义角色提供程序不起作用

  3. 3

    具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

  4. 4

    基于ASP.NET MVC中角色的自定义用户授权

  5. 5

    在ASP.NET MVC和Azure AD中创建自定义用户角色

  6. 6

    在ASP.NET MVC 5中将自定义角色添加到Windows角色

  7. 7

    ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

  8. 8

    创建我的自定义安全角色和自定义用户组表,以实现对asp.net mvc Web应用程序的自定义授权

  9. 9

    如何使ASP.net MVC 5中的自定义分页取决于引导程序?

  10. 10

    ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

  11. 11

    ASP.NET MVC 4-自定义成员资格和角色实体未更新

  12. 12

    ASP.NET MVC中的自定义JSON结果

  13. 13

    ASP.NET MVC中的自定义错误页面

  14. 14

    asp.net core mvc 中的自定义授权

  15. 15

    如何在ASP.NET Core中的自定义本地化提供程序中注入DbContext?

  16. 16

    如何使用ASP-5 / MVC-6 / Identity 3为自定义Asp.Net身份存储提供程序注册中间件

  17. 17

    自定义角色提供程序的授权属性在MVC 5中不起作用

  18. 18

    使用自定义角色在ASP.NET Identity中初始化RoleManager

  19. 19

    C#asp.net身份和自定义角色

  20. 20

    自定义角色的Asp Net Core 3.1授权

  21. 21

    C#asp.net身份和自定义角色

  22. 22

    具有自定义角色的asp.net身份

  23. 23

    自定义asp.net身份角色声明

  24. 24

    是否可以在ASP.NET Core中使用自定义ModelState验证提供程序?

  25. 25

    ASP.NET Identity外部身份验证提供程序自定义图标

  26. 26

    如何在自定义成员身份提供程序中保存ASP.NET_SessionId

  27. 27

    自定义ASP.NET身份,OWIN和社交提供程序登录

  28. 28

    ASP.NET Core 3.1 MVC Access拒绝基于角色的授权-与自定义UserClaimsPrincipalFactory发生冲突

  29. 29

    自定义验证程序asp.net MVC的客户端验证4

热门标签

归档