Spring - 在每次调用 Service/DAO 层时包含当前用户

我正在执行业务验证:当前用户是否有权访问数据库中的特定数据集。为此,我需要登录用户的用户名。


下面的示例工作正常,在控制器/拦截器中成功进行身份验证后,“userName”参数将在从控制器到服务层的所有调用中传递。


@Service 

public class MyServiceImpl implements MyService {


    @Autowired

    private MyDAO myDAO;


    public String getData(String userName) {

          return myDAO.getData(userName);

    }

}

用户信息从控制器传递到服务,然后传递到我想避免的 DAO。


我有自己的机制来处理身份验证和授权。我需要非常简单的解决方案,以便在每次调用 Service/DAO 层的某些上下文中包含这个额外的参数。


注意:我需要一个简单的解决方案,并且不想使用 spring-security 等框架。


森林海
浏览 30回答 2
2回答

慕的地10843

希望您使用线程上下文,您可以轻松地在上下文中设置参数并在应用程序内的任何位置使用它。(很像会话变量)。如果您已经在使用 Spring 会话,那么您可以在会话中设置变量并使用它。

拉丁的传说

也许你可以考虑使用ThreadLocal。认证后将用户名设置为ThreadLocal,并获取Service类中的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java