すべてのコントローラーのすべてのビューの前に、サイトのマスターページに入るデータを渡す必要がないようにするために、コンストラクターでデータを設定する ApplicationController を作成しました...このアプローチの問題は、ビューデータの 1 つが渡す必要があるのは、現在ログインしているユーザーのプロファイル画像の URL です。
[Authorize(Roles = "Administrator")]
public abstract class AdministratorController : Controller
{
private IPortalAdministratorServices _servicioPortalAdministrator;
public AdministratorController()
{
_servicioPortalAdministrator = new PortalAdministratorServices();
ViewData["associates"] = _servicioPortalAdministrator.getAssociates();
ViewData["picture"] = _servicioPortalAdministrator.GetPic();
public AdministratorController(IPortalAdministratorServices service)
{
_servicioPortalAdministrator = service;
}
}
そのため、AdministratorController から継承する私の会社のコントローラーは、ビュー呼び出しごとにすべてのデータを設定する必要がなくなりました。
[Authorize(Roles = "Administrator")]
public class CompaniesController : AdministratorController
{
private ICompaniasServices _service;
public CompaniesController()
{
_service = new CompaniasServices(new ModelStateWrapper(this.ModelState));
}
public CompaniesController(ICompaniasServices service)
{
_service = service;
}
問題はこれです:
実際にメソッドにログインせずに会社コントローラーに手動でアクセスしようとすると、GetPic() は実際には画像の URL を取得できず、誰もログインしていないため、Authorize 属性にもかかわらずこれらのメソッドが呼び出されます。 ....そのため、ログインした後でも、写真の URL の ViewData は永続的に "unknown.png" に設定されています。
このコードの一部は私のものではありません。バグを発見したばかりですが、修正方法がわかりません。