报错:does not have permission [sys:question:page]
版本:renren-security 5.0 |
开发环境: |
在进行接口测试的时候报错:org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [sys:question:page]
下面是相关的代码,希望能告诉我哪里出现了问题,或者可能是哪个模块的代码有问题。
SysQuestionController.java
[pre]
package io.renren.modules.sys.controller;
import io.renren.modules.sys.redis.annotation.LogOperation;
import io.renren.common.constant.Constant;
import io.renren.common.page.PageData;
import io.renren.common.utils.Result;
import io.renren.common.validator.AssertUtils;
import io.renren.common.validator.ValidatorUtils;
import io.renren.common.validator.group.AddGroup;
import io.renren.common.validator.group.DefaultGroup;
import io.renren.common.validator.group.UpdateGroup;
import io.renren.modules.sys.dto.SysQuestionDTO;
import io.renren.modules.sys.service.SysQuestionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Arrays;
import java.util.Map;
@RestController
@RequestMapping("/sys/question")
@Api(tags = "问卷管理")
public class SysQuestionController {
@Autowired
private SysQuestionService sysQuestionService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") ,
@ApiImplicitParam(name = "id", value = "编号", paramType = "query", dataType="Long"),
@ApiImplicitParam(name = "problems", value = "题目", paramType = "query", dataType="String")
})
@RequiresPermissions("sys:question:page")
public Result<PageData<SysQuestionDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<SysQuestionDTO> page = sysQuestionService.page(params);
return new Result<PageData<SysQuestionDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@RequiresPermissions("sys:question:info")
public Result<SysQuestionDTO> get(@PathVariable("id") Long id){
SysQuestionDTO data = sysQuestionService.get(id);
return new Result<SysQuestionDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@RequiresPermissions("sys:question:save")
public Result save(@RequestBody SysQuestionDTO dto){
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
sysQuestionService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@RequiresPermissions("sys:question:update")
public Result update(@RequestBody SysQuestionDTO dto){
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
sysQuestionService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@RequiresPermissions("sys:question:delete")
public Result delete(@RequestBody Long[] ids){
AssertUtils.isArrayEmpty(ids, "id");
sysQuestionService.deleteBatchIds(Arrays.asList(ids));
return new Result();
}
}
[/pre]
SysQuestionServiceImpl.java
[pre]
package io.renren.modules.sys.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.renren.common.constant.Constant;
import io.renren.common.page.PageData;
import io.renren.common.service.impl.BaseServiceImpl;
import io.renren.common.utils.ConvertUtils;
import io.renren.modules.sys.dao.SysQuestionDao;
import io.renren.modules.sys.dto.SysQuestionDTO;
import io.renren.modules.sys.entity.SysQuestionEntity;
import io.renren.modules.sys.service.SysQuestionService;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Service
public class SysQuestionServiceImpl extends BaseServiceImpl<SysQuestionDao, SysQuestionEntity> implements SysQuestionService {
@Override
public PageData<SysQuestionDTO> page(Map<String, Object> params) {
paramsToLike(params, "id");
//分页
IPage<SysQuestionEntity> page = getPage(params, Constant.CREATE_DATE, false);
//查询
List<SysQuestionEntity> list = baseDao.getList(params);
return getPageData(list, page.getTotal(), SysQuestionDTO.class);
}
@Override
public List<SysQuestionDTO> list(Map<String, Object> params) {
List<SysQuestionEntity> entityList = baseDao.getList(params);
return ConvertUtils.sourceToTarget(entityList, SysQuestionDTO.class);
}
@Override
public SysQuestionDTO get(Long id) {
SysQuestionEntity entity = baseDao.getById(id);
return ConvertUtils.sourceToTarget(entity, SysQuestionDTO.class);
}
@Override
public void save(SysQuestionDTO dto) {
SysQuestionEntity entity = ConvertUtils.sourceToTarget(dto, SysQuestionEntity.class);
insert(entity);
}
@Override
public void update(SysQuestionDTO dto) {
SysQuestionEntity entity = ConvertUtils.sourceToTarget(dto, SysQuestionEntity.class);
updateById(entity);
}
@Override
public void delete(Long[] ids) {
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}
[/pre]
SysQuestionDTO.java
[pre]
package io.renren.modules.sys.dto;
import io.renren.common.validator.group.AddGroup;
import io.renren.common.validator.group.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.io.Serializable;
@Data
@ApiModel(value = "问卷管理")
public class SysQuestionDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@Null(message="{id.null}", groups = AddGroup.class)
@NotNull(message="{id.require}", groups = UpdateGroup.class)
private Long id;
@ApiModelProperty(value = "problems")
private String problems;
}
[/pre]
SysQuestionDao.java
[pre]
package io.renren.modules.sys.dao;
import io.renren.common.dao.BaseDao;
import io.renren.modules.sys.entity.SysQuestionEntity;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface SysQuestionDao extends BaseDao<SysQuestionEntity> {
List<SysQuestionEntity> getList(Map<String, Object> params);
SysQuestionEntity getById(Long id);
}
[/pre]
SysQuestionEntity.java
[pre]
package io.renren.modules.sys.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.renren.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("sys_question")
public class SysQuestionEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long id;
private String problems;
}
[/pre]
SysQuestionService.java
[pre]
package io.renren.modules.sys.service;
import io.renren.common.page.PageData;
import io.renren.common.service.BaseService;
import io.renren.modules.sys.dto.SysQuestionDTO;
import io.renren.modules.sys.entity.SysQuestionEntity;
import java.util.List;
import java.util.Map;
public interface SysQuestionService extends BaseService<SysQuestionEntity> {
PageData<SysQuestionDTO> page(Map<String, Object> params);
List<SysQuestionDTO> list(Map<String, Object> params);
SysQuestionDTO get(Long id);
void save(SysQuestionDTO dto);
void update(SysQuestionDTO dto);
void delete(Long[] ids);
}
[/pre]