Windows目录服务无法在Development Server上运行

时间:2014-04-02 13:35:05

标签: c# asp.net-mvc iis razor active-directory

我有一个使用.NET 4网站的MVC Razor,它使用Windows目录服务进行授权。此站点仅在开发服务器上遇到授权问题。它在Localhost和Production Server上运行良好。

这个问题在周末开始,IT告诉我他们对DEV服务器运行了以下更新(非生产):

Update List

这是我对开发服务器环境的唯一更改,但我的问题同时开始。

当我在dev服务器上访问此站点时, WebSecurity.GetUserId 不会返回UserId(但它仍然在localhost和prod服务器上执行) dev server它返回-1而不是我的UserId。

此时我不确定(1)IT更新是否导致此问题,(2)他们是否进行了另一项我不知道的更改,或(3)我的代码是否需要更新以使用这些更新(或我不知道的未知更改)。

这是代码......

HomeController.cs

[AppendTrailingSlash]
[InitializeSimpleMembership]
[RequireAuthorization]    
public class BaseController : Controller
{
    public UnitOfWork unitOfWork =  new UnitOfWork();

    public UserProfile _get_user()
    {
        int user_id = WebSecurity.GetUserId(User.Identity.Name);

        if (user_id == -1)
        {
            //Error getting user log them out
            WebSecurity.Logout();
            Session.Abandon();
            Response.Redirect(Request.Url.AbsoluteUri);
        }

        return unitOfWork.UserProfileRepository.dbSet.Single(u => u.UserId == user_id);
    }

    public UserProfile user
    {
        get
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            return _get_user();
        }
    }

    public BaseController()
    {
        System.Web.HttpContext.Current.Items["MyAppUnitOfWork"] = unitOfWork;
    }

    protected override void Dispose(bool disposing)
    {
        unitOfWork.Dispose();
        base.Dispose(disposing);
    }
}

public class HomeController : BaseController
{
    public ActionResult Home()
    {
        bool show_myapp = user.is_myapp_authorized;

        string return_url = Request.QueryString["ReturnUrl"];

        if (return_url != null)
        {
            Response.Redirect(return_url);
        }

        ViewBag.show_myapp = show_myapp; 
        ViewBag.user = user;
        return View();
    }

    public ActionResult Logout()
    {
        WebSecurity.Logout();
        Session.Abandon();
        return this.Content("{\"logout\": \"true\"}", "application/json");
    }

}

0 个答案:

没有答案