Context.User在MVC中的页面请求之间不存在 - 最好的方法?

时间:2014-06-09 14:25:29

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

打扰一下,如果已经问过这个问题我已经浏览了论坛,但找不到具体的答案。我正在开发一个Intranet站点,我正在为Context.User设置GenericPrincipal。这在默认控制器加载之前发生在Global.asax中。控制器使用自定义授权属性来管理哪些用户可以查看哪些内容。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Security.Principal;

namespace IntranetTest
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            DAL.IME_IMechEHubUsers IME_IMechEHubUsers = new DAL.IME_IMechEHubUsers();
            List<string> Roles = IME_IMechEHubUsers.GetRoles();
            Models.User User = IME_IMechEHubUsers.GetUser();

            GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(User.RoleName), Roles.ToArray());

            Context.User = userPrincipal;
        }
    }
}

我的问题是,当我通过点击页面上的其中一个链接发出第二个GET请求时,它不再知道用户的角色。它已被用户网络标识所覆盖。

enter image description here

enter image description here

我对如何在Intranet应用程序中授权用户感到困惑。用于存储角色和用户的数据库是aspnet成员资格表。但它们只是标准表,问题是如何使用httpcontext.user在请求之间保持用户角色。

0 个答案:

没有答案