Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. @Autowired
  2. public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
  3. auth.jdbcAuthentication().dataSource(dataSource)
  4. .usersByUsernameQuery(
  5. "select username,password, enabled from users where username=?")
  6. .authoritiesByUsernameQuery(
  7. "select username, role from user_roles where username=?");
  8. }
  9.  
  10. CREATE TABLE IF NOT EXISTS users (
  11. id SERIAL PRIMARY KEY,
  12. username VARCHAR(20) UNIQUE NOT NULL,
  13. password VARCHAR(20) UNIQUE NOT NULL,
  14. role INTEGER NOT NULL,
  15. FOREIGN KEY (role) REFERENCES user_role (id)
  16. );
  17.  
  18. CREATE TABLE IF NOT EXISTS user_role (
  19. id SERIAL PRIMARY KEY,
  20. role VARCHAR(10)
  21. );
  22.  
  23. select u.username, r.role from users
  24. inner join user_role on u.role = r.id
  25. where username = ?
  26.  
  27. <security:authentication-manager>
  28. <security:authentication-provider>
  29. <security:jdbc-user-service
  30. data-source-ref="dataSource"
  31. users-by-username-query="select username, password, enabled from users where username = ?"
  32. authorities-by-username-query="select m2m.username, a.authority from group_members as m2m inner join group_authorities as a using(group_id) where m2m.username = ?" />
  33. </security:authentication-provider>
  34. </security:authentication-manager>
  35.  
  36. @Service("userDetailsService")
  37. public class MyUserDetailsService extends JdbcDaoImpl {
  38. private final String usersByUsernameQuery
  39. = "select login, password, enabled, superuser from users where login = ?";
  40. private final String authoritiesByUsernameQuery
  41. = "select u.login, a.authority_name from groups_users as m2m "
  42. + "inner join users as u on u.id = m2m.members_id "
  43. + "inner join groups as g on g.id = m2m.groups_id "
  44. + "where u.login = ?";
  45.  
  46. ...
  47.  
  48. public UserDetails loadUserByUsernameAndRealm(String username) {
  49. List<MyUserDetails> users = loadUsersByUsername(username);
  50. if (users.size() == 0) {
  51. throw new UsernameNotFoundException("Username not found");
  52. }
  53. UserDetails user = users.get(0);
  54.  
  55. List<GrantedAuthority> authorities = loadAuthorities(user.getUsername());
  56.  
  57. return createUserDetails(username, user, authorities);
  58. }
  59.  
  60. protected List<UserDetails> loadUsersByUsername(String username) {
  61. return getJdbcTemplate().query(usersByUsernameQuery, new String[] { username },
  62. new RowMapper<UserDetails>() {
  63. public UserDetails mapRow(ResultSet rs, int rowNum) throws SQLException {
  64. String username = rs.getString(1);
  65. String password = rs.getString(2);
  66. boolean enabled = rs.getBoolean(3);
  67. boolean superuser = rs.getBoolean(4); // Новое свойство!
  68. boolean accountNonExpired = true;
  69. boolean credentialsNonExpired = true;
  70. boolean accountNonLocked = true;
  71.  
  72. return new MyUser(username, password, enabled, superuser, accountNonExpired, credentialsNonExpired,
  73. accountNonLocked, AuthorityUtils.NO_AUTHORITIES);
  74. }
  75. }
  76. );
  77. }
  78. }
  79.  
  80. public class MyUser extends User {
  81. private final boolean superuser;
  82.  
  83. public MyUser(String username, String password, boolean enabled,
  84. boolean superuser, boolean accountNonExpired,
  85. boolean credentialsNonExpired, boolean accountNonLocked,
  86. List<GrantedAuthority> authorities) {
  87. super(username, password, enabled, accountNonExpired,
  88. credentialsNonExpired, accountNonLocked, authorities);
  89. this.superuser = superuser;
  90. }
  91.  
  92. public boolean isSuperuser() {
  93. return superuser;
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement