授权用户访问,ASP.NET MVC

时间:2015-10-01 18:30:59

标签: asp.net-mvc

我的数据库表中有不同guid的行:

List<Paciente> myList = new ArrayList<Paciente>();

我想创建一组用户,这些用户可以使用某个guid查看新闻。我正在使用ASP.NET MVC模板和用户身份验证,但我无法理解我应该如何实现目标?我可以注册用户,我读过有关角色和过滤器的内容,但它没有帮助。

public class News
{
    public int NewsId { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public int guid { get; set; }
}

我应该以某种方式搜索如何在控制器方法中检索用户的id,而不是查询数据库并让用户组过滤新闻列表或者解决方案更容易?

另外,在Django中,我能够从prebuild管理面板控制用户,ASP.NET MVC类似的东西,或者我应该为此创建自己的控制器?如果我想为不同的用户过滤内容,我需要以某种方式将用户添加到组/(给他们角色)。

2 个答案:

答案 0 :(得分:1)

使用你的控制器的用户属性。

答案 1 :(得分:0)

有几种方法可以实现这一点,这是我的版本。 GetNews()方法应该只负责获取新消息并返回Actionresult。不应在此方法SOLID

中管理检查用户ID或其他任何内容的逻辑

至于控制谁应该有权访问GetNews(),您可以从应用中已实现的身份验证逻辑中受益。 属性[Authorize]仅允许访问经过身份验证的用户以使用您的方法。通过扩展功能,尝试添加基于角色的逻辑。像[Authorize(Roles = "NewsMembers")]

这样的东西
  

奖金

添加角色的示例代码:

 private void AddRole(String roleName)
        {
            var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
            var role = new IdentityRole();
            role.Name = roleName;
            roleManager.Create(role);
        }

向用户添加角色的示例代码

public void addRoleToUser(string UserId,string roleName)
        {
            var context = new ApplicationDbContext();
            var userStore = new UserStore<ApplicationUser>(context);
            var userManager = new UserManager<ApplicationUser>(userStore);
            userManager.AddToRole(UserId,roleName);
            userManager.Dispose();
            userStore.Dispose();
        }