Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在何处放置访问权限_.net_Xml_Asp.net Mvc 4 - Fatal编程技术网

.net 在何处放置访问权限

.net 在何处放置访问权限,.net,xml,asp.net-mvc-4,.net,Xml,Asp.net Mvc 4,我正在MVC4中开发一个应用程序。因为我有各种类型的用户,每个用户都有不同的访问权限。根据访问情况,用户携带应用程序将相应地生成视图。此访问权限将在创建时授予用户 我已将此访问权限存储在数据库中。我的问题是,每次用户做某事时,我都必须检查它是否具有访问权限,因为每次我需要从数据库中获取它,但我不想这样做。我希望这样做是为了保存在一个xml文件中,但当多个用户使用它时,它将克服写操作的错误 我想知道什么是保存这些细节的好地方,这样在整个项目过程中我都可以随时使用这些细节 您可以将此信息存储在全局应

我正在MVC4中开发一个应用程序。因为我有各种类型的用户,每个用户都有不同的访问权限。根据访问情况,用户携带应用程序将相应地生成视图。此访问权限将在创建时授予用户

我已将此访问权限存储在数据库中。我的问题是,每次用户做某事时,我都必须检查它是否具有访问权限,因为每次我需要从数据库中获取它,但我不想这样做。我希望这样做是为了保存在一个xml文件中,但当多个用户使用它时,它将克服写操作的错误


我想知道什么是保存这些细节的好地方,这样在整个项目过程中我都可以随时使用这些细节

您可以将此信息存储在全局应用程序缓存中,该缓存可供web应用程序的所有会话访问。如果您想在每个会话中存储数据,那么您可以考虑将数据存储在会话中。p> 是指向.net中缓存技术和最佳实践的链接

会话缓存在您的情况下可能更有用,因为数据是供登录用户使用的

在会话中填充用户数据非常简单。下面是一个示例,说明我将如何设想存储有关用户的数据

public class MySession
{
    private const string _SessionName = "__MY_SESSION__";

    private MySession(){}

    public MyUser CurrentUser { get; set; }

    public static MySession Current
    {
        get
        {
            MySession session =(MySession)HttpContext.Current.Session[_SessionName];
            if (session == null)
            {
                session = new MySession();                    
                HttpContext.Current.Session[_SessionName] = session;
            }
            return session;
        }
    }

    public void Clear()
    {
        HttpContext.Current.Session.Clear();
        HttpContext.Current.Session.Abandon();
    }
}
然后,您可以在服务器端方法可以访问的某个静态帮助器类中使用该类

public static MyAppClass
{
    public static MySession Session { get { return MySession.Current; } }
}
然后,在控制器中,您只需进行类似以下操作的呼叫:

public ActionResult Login()
{
    MyUser user=GetUserFromDatabase();
    MyAppClass.Session.CurrentUser=user;
}


public ActionResult SomMethod()
{
    MyUser loggedInUser=MyAppClass.Session.CurrentUser;
    if(loggedInUser.CanAccess(something))
    {
      ....
    }
}
这就是所谓的“角色”,搜索。没有必要用粗体突出显示问题的一半。这只会让你的问题难以理解。