using Autofac.Integration.Mvc;
using Rongzi.RZR.Huoke.Repository;
using Rongzi.RZR.Huoke.Service;
using Rongzi.RZR.Huoke.Service.MQ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using Rongzi.RZR.Huoke.Repository.Account;
using System.IO;
using Rongzi.RZR.Huoke.Infrastructure.Dependency;
using Rongzi.RZR.Huoke.Service.Services;
using Autofac.Core.Lifetime;
namespace Rongzi.RZR.Huoke
public
class
ContainerConfig
public
static
IContainer BuildUnityContainer()
var builder
=
new
ContainerBuilder();
RegisterTypes(builder);
return
builder.Build();
private
static
void
RegisterTypes(ContainerBuilder builder)
builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
#region register service
builder.RegisterType
<AccountService>
().PropertiesAutowired();
builder.RegisterType
<HomeService>
().PropertiesAutowired();
builder.RegisterType
<SettingsService>
().PropertiesAutowired();
builder.RegisterType
<ImageValidateService>
().PropertiesAutowired();
builder.RegisterType
<SmsValidDateService>
().PropertiesAutowired();
builder.RegisterType
<CommonService>
().PropertiesAutowired();
builder.RegisterType
<LayoutHelper>
().PropertiesAutowired();
builder.RegisterType
<AdminUtmSourceService>
().PropertiesAutowired();
#endregion
#region register respository
builder.RegisterType
<OrganizationRespository>
();
builder.RegisterType
<OrganizationUserRepository>
();
builder.RegisterType
<RequirementBookRespository>
();
builder.RegisterType
<OrganizationDayStatisticsRepository>
();
builder.RegisterType
<CustomRespository>
();
builder.RegisterType
<BaseDataRespository>
();
builder.RegisterType
<AdminUtmSourceRepository>
();
#endregion
public
static
T Resolve<T>(string key = "", ILifetimeScope scope =
null
) where T :
class
if
(scope ==
null
)
//
no scope specified
scope =
Scope();
if
(string.IsNullOrEmpty(key))
return
scope.Resolve<T>
();
return
scope.ResolveKeyed<T>
(key);
public
static
ILifetimeScope Scope()
if
(HttpContext.Current !=
null
)
return
AutofacDependencyResolver.Current.RequestLifetimeScope;
//
when such lifetime scope is returned, you should be sure that it'll be disposed once used (e.g. in schedule tasks)
return
BuildUnityContainer().BeginLifetimeScope(MatchingScopeLifetimeTags.RequestLifetimeScopeTag);
catch
(Exception)
//
we can get an exception here if RequestLifetimeScope is already disposed
//
for example, requested in or after "Application_EndRequest" handler
//
but note that usually it should never happen
//
when such lifetime scope is returned, you should be sure that it'll be disposed once used (e.g. in schedule tasks)
return
BuildUnityContainer().BeginLifetimeScope(MatchingScopeLifetimeTags.RequestLifetimeScopeTag);
namespace Rongzi.RZR.Huoke.Filters
public class ApiFormAuthFilterAttribute : System.Web.Mvc.ActionFilterAttribute
public AccountService AccountService { get; set; }
public ApiFormAuthFilterAttribute()
this.AccountService = ContainerConfig.Resolve<AccountService>();
public override void OnActionExecuting(ActionExecutingContext actionContext)
if (actionContext == null || actionContext.HttpContext.Request == null || actionContext.HttpContext.Request.RawUrl == null) { return; }
string OrgUserAccountInfo = actionContext.HttpContext.Request.QueryString["OrgUserAccountInfo"];
if (!String.IsNullOrEmpty(OrgUserAccountInfo))
OrgUserAccountInfo info = new RSAEncryptHelper().DecryptString<OrgUserAccountInfo>(OrgUserAccountInfo);
OrganizationUserModel oUser = AccountService.GetOrganizationUserByPhone(info.CellPhone);
if (oUser == null || oUser.OrgId!=info.OrgId)
actionContext.Result = GetAuthJsonResult("手机号或机构id错误"); return;
if (DateTime.Now.AddMinutes(-10) > info.timespan)
actionContext.Result = GetAuthJsonResult("该链接已超时"); return;
FormsAuth.SignIn(oUser);
base.OnActionExecuting(actionContext);
return;
base.OnActionExecuting(actionContext);
public static JsonResult GetAuthJsonResult(string msg = "用户还未登录")
var errResponse = new ResponseContext<string>();
errResponse.Head = new ResponseHead(-2, ErrCode.AuthError, msg);
return new JsonResult
Data = errResponse,
ContentEncoding = System.Text.Encoding.UTF8,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
base.OnActionExecuted(actionExecutedContext);
http://blog.csdn.net/fanbin168/article/details/51293218
https://www.cnblogs.com/niuww/p/5649632.html