【问题标题】:Authorization in ASP.NET MVC 4ASP.NET MVC 4 中的授权
【发布时间】:2015-04-14 04:16:33
【问题描述】:

我在网站上有一个菜单。我想为每个角色访问它。

例如:我有 3 个角色,角色 1 可以访问人员、推荐、访问菜单,角色 2 可以访问人员、饮食菜单,角色 3 具有完全访问权限。

我创建了一个静态类,在用户登录站点时设置值。并将此类属性用于显示/隐藏菜单。但是当其他用户登录站点时更改此值。

public static class GlobalVariables
{
    public static string UserName { get; set; }
    public static string Image { get; set; }

    public static bool IsAuthorizePersonnel { get; set; }
    public static bool IsAuthorizeReferred { get; set; }
    public static bool IsAuthorizeDiet { get; set; }
    public static bool IsAuthorizeVisit { get; set; }
 }

如何设置菜单访问权限?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 authorization


    【解决方案1】:

    当新用户登录时,静态类会发生变化,因为 ASP.NET 在同一个 App 域中处理多个请求/客户端,这意味着它们共享静态类/属性。

    为了完成类似的工作,您需要通过会话状态或用户键控内存缓存(例如 Redis)来缓存信息。

    另外,Asp.Net 简单成员确实支持角色,因此您也可以考虑创建 IsX 属性作为角色检查的包装器。

    有关示例,请参阅以下文章:

    【讨论】:

    • 谢谢,我使用角色并将用户设置为角色。但我想在登录视图中获取用户的属性值并在另一个视图中使用这个值
    【解决方案2】:

    基本上,您有一个用于站点中所有用户的类的单个实例。由于它是一个静态类。

    您应该为每个用户创建一个实例类。您可以将其放在 fi 用户名下的缓存中。

    【讨论】:

    • 谢谢,当创建了每用户实例类时,我如何在另一个视图中使用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多