C# 如何在登录时获取对象列表并在注销前使用

C# 如何在登录时获取对象列表并在注销前使用,c#,asp.net-mvc,C#,Asp.net Mvc,我正在做的是: 1。我正在获取布局页面上的用户角色。 @{ List<string> UserRole = new List<string>(); if(User.Identity.IsAuthenticated){ UserRole = DocRevGen.Class.Common.Roles(User.Identity.Name); } } @{

我正在做的是:
1。我正在获取布局页面上的用户角色。

 @{
        List<string> UserRole = new List<string>();
        if(User.Identity.IsAuthenticated){
            UserRole = DocRevGen.Class.Common.Roles(User.Identity.Name);   
        }

    }
@{
                        if (UserRole.Contains("Admin") || UserRole.Contains("User"))
                        {
                        <li class="active"><a href="#">Overview</a></li>    
                        }
                    }
@{
List UserRole=new List();
if(User.Identity.IsAuthenticated){
UserRole=DocRevGen.Class.Common.Roles(User.Identity.Name);
}
}
2。像这样使用此用户角色。

 @{
        List<string> UserRole = new List<string>();
        if(User.Identity.IsAuthenticated){
            UserRole = DocRevGen.Class.Common.Roles(User.Identity.Name);   
        }

    }
@{
                        if (UserRole.Contains("Admin") || UserRole.Contains("User"))
                        {
                        <li class="active"><a href="#">Overview</a></li>    
                        }
                    }
@{
if(UserRole.Contains(“Admin”)| | UserRole.Contains(“User”))
{
  • } }
    但问题是每次加载页面时都会调用
    UserRole
    我想在登录时填写一次
    UserRole
    ,并使用
    UserRole
    直到注销。

     @{
            List<string> UserRole = new List<string>();
            if(User.Identity.IsAuthenticated){
                UserRole = DocRevGen.Class.Common.Roles(User.Identity.Name);   
            }
    
        }
    
    @{
                            if (UserRole.Contains("Admin") || UserRole.Contains("User"))
                            {
                            <li class="active"><a href="#">Overview</a></li>    
                            }
                        }
    
    有什么解决办法吗。
    我只是想得到一个提示。我该怎么办?

    您可以在会话中保存此变量:

    Session["roles"] = UserRole;
    
    要从会话中获取它,请执行以下操作:

    var roles = (List<string>)Session["roles"];
    
    var角色=(列表)会话[“角色”];
    

    但这不是一个好主意,因为如果某些用户角色将被删除,它将仅在用户注销或会话超时时应用。

    您可以使用数据库并将信息存储在那里。或者您也可以使用全局变量,然后只访问所需的信息。

    如果管理员更改了角色,我们将无法更新当前用户的会话。可以删除最大会话数