亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法初始化代理 - 沒有會話,在 Spring 攔截器內

無法初始化代理 - 沒有會話,在 Spring 攔截器內

www說 2022-10-07 17:36:40
我的配置中有一個攔截器,我想禁止訪問其他用戶的資源。在 WebMvcConfig(實現 WebMvcConfigurer)中,我有:@Overridepublic void addInterceptors(InterceptorRegistry registry) {    registry.addInterceptor(new FolderInterceptor(userService, folderService))            .addPathPatterns(Mapping.FOLDER_MAPPING + "/{id}",                    Mapping.UPDATE_FOLDER_MAPPING + "/{id}",                    Mapping.DELETE_FOLDER_MAPPING + "/{id}",                    Mapping.DOWNLOAD_FOLDER_MAPPING + "/{id}");}在我的 FolderInterceptor 中,我有一個 preHandle 方法獲取訪問的文件夾并檢查其所有者:Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);Long id = Long.valueOf((String) pathVariables.get("id"));User user = userService.getLoggedAccount();if (folderService.existsById(id)) {    Folder folder = folderService.findById(id);    if (folder.getOwner().getId().equals(user.getId())) {        return true;    }    else {        response.sendError(403, "Unauthorized");        return false;    }}else {    response.sendError(404, "Folder does not exist");    return false;}如果我打印文件夾對象,我在該行有同樣的錯誤。org.hibernate.LazyInitializationException: could not initialize proxy.謝謝您的幫助。
查看完整描述

2 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

我使用 getOne 方法在我的服務中按 id 檢索我的文件夾?,F在使用 folderRepository.findById(id) 并且現在可以使用:


public Folder findById(Long id) {


    Optional<Folder> folder = folderRepository.findById(id);


    if (!folder.isPresent())

        return null;


    return folder.get();

}


查看完整回答
反對 回復 2022-10-07
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

您很Folder可能正在檢索一個實體,而無需在此處的一個事務下獲取任何依賴項:

Folder folder = folderService.findById(id);

然后,當您嘗試訪問時folder.getOwner(),沒有獲取 Owner 依賴項,并且持久性提供程序嘗試從數據庫中延遲加載它:

if (folder.getOwner().getId().equals(user.getId())) { 
   return true;
   }

問題在于它folder超出了事務范圍和一個分離的實體。

我建議獲取方法Owner 內部folderService.findById(id)或將查詢和條件置于相同的事務方法下。


查看完整回答
反對 回復 2022-10-07
  • 2 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號