在ASP.NET MVC中进行依赖注入,可以使用.NET Core自带的依赖注入框架。 在ASP.NET MVC中默认使用的是Scoped注入方式,该方法使服务仅交付给正在处理的请求,而不是整个应用程序。
示例代码如下:
// 定义IAuthorizationService接口
public interface IAuthorizationService { bool CanUserAccessPage(int userId, string pageUrl); }
// 实现AuthorizationService
public class AuthorizationService : IAuthorizationService { public bool CanUserAccessPage(int userId, string pageUrl) { // 在此处编写授权逻辑 } }
// 定义HomeController
public class HomeController : Controller { private readonly IAuthorizationService _authorizationService;
public HomeController(IAuthorizationService authorizationService)
{
_authorizationService = authorizationService;
}
public IActionResult Index()
{
int userId = GetUserId(); // 假设获取当前用户ID的方法为GetUserId()
if (_authorizationService.CanUserAccessPage(userId, "/Home/Index"))
{
return View();
}
else
{
return new UnauthorizedResult();
}
}
}
// 在Startup文件中进行依赖注入的注册
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped
在上面的示例代码中,HomeController使用IAuthorizationService进行授权检查。 我们通过在Startup.cs文件中注册IAuthorizationService来注入AuthorizationService的实例。 在服务容器中,我们使用AddScoped方法将IAuthorizationService注册为Scoped服务。 这意味着每个请求将获得AuthorizationService的新实例。