java - Spring MVC : Expire privilege flag after 5 minutes for edit

标签 java spring spring-mvc

  • 我正在开发一个 Spring-MVC 应用程序,我希望在其中 喜欢授予用户在模态框内进行编辑的权限,仅适用于 5 个 分钟。我为此目的设置了一个 boolean 标志,所以如果 多人想要编辑此字段,然后他们可以阅读某人 正在编辑它,并且将自行承担编辑风险。
    • 但我的问题是,如果第一个用户断电或获得 断开连接,我想再次在数据库中设置注释是 可编辑,通过将状态设为 false。所以,我想允许编辑标志 5 分钟,然后将其停用。我怎样才能实现这个目标?这是我的 代码

:

  @Override
        public void setActiveEdit(int noteId, boolean status) {
            GroupNotes groupNotes = this.groupNotesDAO.getGroupNoteById(noteId);
    // Start a 5 minutes counter here if status is true
            groupNotes.setActiveEdit(status);
            this.groupNotesDAO.editGroupNote(groupNotes,groupNotes.getOwnednotes().getMsectionid());
        }

任何帮助都会很好。多谢。 :-)

最佳答案

第二个答案:

// in the controller where this stuff is needed
private Map<String, Date> editLocks = new HashMap<>();
private Object concurrencyLock = new Object();


// function for acquiring a lock
private boolean getLock(String id) {
    synchronized(concurrencyLock) {
        Date lastLock = editLocks.get(id);
        if (lastLock == null || longAgoEnough(lastLock)) {
            // add a new lock to the map with the time of now
            editLocks.put(id, now());
            return true; // a lock was available
        }
    }
    // we get here because there's a valid lock
    return false;
}

private void releaseLock(String id) {
    synchronized(concurrencyLock) {
        editLocks.remove(id);
    }
}

您必须添加一些内容才能完成它,但它在单个服务器上运行得很好。

关于java - Spring MVC : Expire privilege flag after 5 minutes for edit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346575/

相关文章:

java - spring Autowiring 注释错误

spring - 提交带有选择字段的表单时出错

java - 比较字符串与 JSTL

java - 被测类模拟课

java - 无法从异步方法获取应用程序属性

spring - 如何在Spring Boot的嵌入式tomcat中展开war?

spring - 根据查询参数在spring中将相同的URL映射到不同的 Controller

java - modelAndView返回后执行任务

java - Spring:同时使用@RequestMapping和@ExceptionHandler注释一个方法?

java - 如何将java输出作为matlab变量传递?