2014-09-26 84 views
0

我在Spring-MVC应用程序中使用Spring安全框架。我必须在数据库中检查用户名和密码是否匹配,当然使用spring security。在多个网站上,我找到了角色的使用。我的程序或数据库中没有这样的属性角色。我可以排除这种情况,或者在使用Spring-Security时是否有必要使用角色。我张贴一些代码。请看看。春季安全认证,其中的角色的一部分?

<authentication-provider> 
    <jdbc-user-service data-source-ref="dataSource" users-by-username-query="select username,password from users where username=?" authorities-by-username-query="select u.username, r.authority from users u, roles r where u.userid = r.userid and u.username =?" /> 
</authentication-provider> 

的LoginController:

@Controller 
@PreAuthorize("hasRole('ROLE_USER')") 
public class LoginController { 
@RequestMapping(value = "/login", method = RequestMethod.GET) 
    public String login(){ 
     return "login"; 
    } 
} 

用户等级:

@Entity 
@Table(name="registration") 
public class User { 
private String Username; 
private String password; 
} 

哪里作用,这一切进来的画面。 P.S:我根据我的例子添加了预授权。谢谢。

回答

0

这实际上取决于您的要求。

首先,您基本上说完全击败了登录端点的目的,只有具有角色'ROLE_USER'的授权用户才能请求此端点。

您可以排除角色,但角色的整个基础是允许/禁止该授权用户的某些操作。

IE:一个普通用户不应该能够删除另一个用户。

+0

谢谢。我是Spring安全新手。所以我想我需要在表格中创建一个角色。 PreAuthorize语句应该在哪里?在userController中? – 2014-09-26 14:19:47

+0

你应该能够在网上找到很多很好的例子和代码库。做一点研究!出于各种原因,我喜欢在服务层保留PreAuthorize注释。 – proulxs 2014-09-26 14:30:24

+0

好吧,我会,但不幸的是现在我想让这个东西工作。我现在应该在UserController中使用它吗? – 2014-09-26 14:37:19