相关疑难解决方法(0)

@PreAuthorize不适用于方法安全规则和方法参数

我将Spring Security添加到一个Spring项目中.系统的体系结构是REST,用户可以访问不同的资源.

我想向拥有此信息的管理员和用户提供个人信息访问权限.我已经开始简单:过滤用户配置文件,如下所示:

在我的服务层中,我想使用方法注释并包含方法参数.

@PreAuthorize("hasRole('ROLE_ADMIN') or principal.userId == #id")
public Usuario getUser(int id) throws DAOException {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这根本不起作用.当请求此URL时,任何用户都可以看到所有配置文件(管理员和所有用户)(Web层):

@RequestMapping(value="/user/{uid}", method=RequestMethod.GET)
    public ModelAndView getUser(@PathVariable int uid) throws DAOException {
        userDAO = new UsuarioJPADAO();
        userService.setUsuarioDAO(userDAO);

    return new ModelAndView("user", "user", userService.getUser(uid));
}
Run Code Online (Sandbox Code Playgroud)

这是我的 security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
       xmlns:beans="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<!-- Security Annotations -->
    <global-method-security 
        pre-post-annotations="enabled"/>

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/css/**" access="permitAll" />
    <intercept-url pattern="/images/**" access="permitAll" />
    <intercept-url pattern="/js/**" access="permitAll" />
    <intercept-url …
Run Code Online (Sandbox Code Playgroud)

java annotations aspectj spring-security

11
推荐指数
1
解决办法
1万
查看次数

spring security:intercept-url pattern access ="#id == 1

我有项目是iam spring security 3.1.3和mvc 3.2

我想要允许路径中的userid中的url wehen匹配主要用户ID

    <security:intercept-url pattern="/user/{id}/edit" access="#id == principal.userId"/>
Run Code Online (Sandbox Code Playgroud)

http use-expressions设置为true,当try principal.userId == 1时它可以工作,但我需要使用url中提取的值.

我已经尝试了所有可能的组合.

spring spring-mvc spring-security

4
推荐指数
1
解决办法
2494
查看次数