【问题标题】:Authorized users access, ASP.NET MVC授权用户访问,ASP.NET MVC
【发布时间】:2015-10-01 18:30:58
【问题描述】:

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

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

我想创建用户组,以便能够使用特定的 guid 查看新闻。我正在使用带有用户身份验证的 ASP.NET MVC 模板,但我不明白应该如何实现我的目标?我可以注册用户,我阅读了角色和过滤器,但没有帮助。

[Authorize]
public ActionResult GetNews()
{
 // GET USER GUID AND RETRIEVE NEWS WITH THIS GUID??
}

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

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

【问题讨论】:

  • 你已经尝试过什么但没有成功?
  • 我需要一个方向来做什么,我阅读了关于 AuthenticationFilter、ActionFilterAttribute 和其他过滤器的信息,看起来它对我没有帮助。我确信 ASP.NET MVC 应该有一些技术让它变得简单,我只是不知道它是什么
  • 您是否尝试过查看控制器的属性?那个叫User的,可能?

标签: asp.net-mvc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    有几种方法可以实现,这是我的版本。 GetNews() 方法应该只负责获取新消息并返回一个 Actionresult 。检查用户 ID 或其他任何内容的逻辑不应在此方法中管理 SOLID

    至于控制谁应该有权访问 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();
            }
    

    【讨论】:

    • 您的回答中似乎缺少您承诺的 GetNews() 方法实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2014-05-28
    相关资源
    最近更新 更多