打扰一下,如果已经问过这个问题我已经浏览了论坛,但找不到具体的答案。我正在开发一个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请求时,它不再知道用户的角色。它已被用户网络标识所覆盖。
我对如何在Intranet应用程序中授权用户感到困惑。用于存储角色和用户的数据库是aspnet成员资格表。但它们只是标准表,问题是如何使用httpcontext.user在请求之间保持用户角色。