2015-05-07 3 views
0

Моя задача - войти в приложение, используя концепцию Spring-security. Я могу войти в систему, используя Spring безопасности, но это только для «ROLE_ADMIN» (потому что я включил (<user name="Sriram" password="12345" authorities="ROLE_USER" />) в весенне-security.xml.,Авторизация с использованием Spring Security

Так только Sriram может войти в приложение. Теперь мой вопрос есть, я должен войти в приложение, используя ниже верительных (<user name="Yogesh" password="12345" authorities="DIRECT_CUSTOMER" />) Это означает, что проверка должна произойти для конкретных пользователей

  • случай 1: Если журналы Sriram в -> Он может видеть только его авторизованному следующую страницу
  • ...
  • Случай 2: Если Yogesh входит в систему -> Он может видеть только свою авторизованную страницу.

Это означает, что он должен проверить в spring-security.xml для входа.

Это моя весна-security.xml:

<http auto-config="true" access-denied-page="/accessDenied.jsp"> 
     <intercept-url pattern="/" access="ROLE_USER"/> 
     <form-login login-page="/login" default-target-url="/login" 
      authentication-failure-url="/loginfailed" /> 
     <logout logout-success-url="/logout" /> 
    </http> 

    <authentication-manager> 
    <authentication-provider> 
    <user-service> 
    <user name="Sriram" password="12345" authorities="ROLE_USER" /> 
    <!-- <user name="Vignesh" password="12345" authorities="ROLE_ADMIN" /> --> 
<!-- <user name="Yogesh" password="12345" authorities="PARTNER_CUSTOMER" /> --> 
    </user-service> 
    </authentication-provider> 
</authentication-manager> 

ответ

1

да проверка будет происходить только для пользователей, предусмотренных в весенне-security.xml

<user-service> 
    <user name="Sriram" password="12345" authorities="ROLE_USER" /> 
    <user name="Vignesh" password="12345" authorities="ROLE_ADMIN" /> 
    <user name="Yogesh" password="12345" authorities="PARTNER_CUSTOMER" /> 
</user-service> 

вы не должны комментировать других пользователей. Просто во время входа в систему введите учетные данные &. Структура безопасности будет соответствовать введенным данным в отношении записей под тегом <user-service>.

В случае большого количества пользователей вы можете создать базу данных пользователя &, чтобы получить информацию оттуда под отметкой <user-service>. Проверка this

Вы можете установить контроль доступа на основе ролей. Каждый пользователь будет иметь свои соответствующие роли &, тогда вы можете сопоставить URL-адрес муравья в соответствии с ролью. См. Приведенный ниже примерный код

<http auto-config="true"> 
    <access-denied-handler error-page="/403page" /> 
    <intercept-url pattern="/user**" access="ROLE_USER" /> 
    <intercept-url pattern="/admin**" access="ROLE_ADMIN" /> 
    <form-login login-page='/login' username-parameter="username" 
    password-parameter="password" default-target-url="/user" 
    authentication-failure-url="/login?authfailed" /> 
    <logout logout-success-url="/login?logout" /> 
</http> 

Пользователи, имеющие определенные роли, смогут получить доступ к URL-адресам, отображаемым в соответствии с ролями. Таким образом, Vignesh не сможет получить доступ к url ​​/admin**, которому будет только доступ /user**

+0

Спасибо, друг :) Скажем, Шрирам - это суперАдмин. Таким образом, он может видеть только связанный с ним следующий файл jsp. Скажем, Yogesh - MasterAdmin, поэтому он может видеть только свой связанный следующий файл jsp. Скажем, Vignesh - это пользователь, поэтому он должен видеть только свою связанную следующую страницу jsp. Как это реализовать здесь? Мне нужна идея – Yogesh

+0

Какие изменения я должен сделать в spring-security.xml. Я имею в виду здесь в этой строке Yogesh

+0

Я обновил свой ответ – underdog

0

Вот ответ, который я нашел. работал весна-security.xml здесь ниже

<intercept-url pattern="/" access="ROLE_USER" /> 

<user-service> 
    <user name="Sriram" password="12345" authorities="ROLE_USER" /> 
    <user name="Yogesh" password="12345" authorities="ROLE_USER" /> 
    <user name="Vignesh" password="12345" authorities="ROLE_USER" /> 
    <user name="Shruti" password="12345" authorities="ROLE_USER" /> 
    <user name="Umesh" password="12345" authorities="ROLE_USER" /> 
    </user-service> 

и я контролировал его в HomeController.java для проверки пользователей размещать их на своих уполномоченных страницах.

@RequestMapping(value="/", method = RequestMethod.GET) 
     public String printWelcome(ModelMap model) { 

      User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
      String name = user.getUsername(); 
      System.out.println(name); 
      String password=user.getPassword(); 
      System.out.println(password); 
      if(name.equals("Sriram") && (password.equals("12345"))){ 
       return "post-login_SoXAdmin"; 
      }else if(name.equals("Yogesh") && (password.equals("12345"))){ 
       return "post-login_directCustomerAdmin"; 
      }else if(name.equals("Vignesh") && (password.equals("12345"))){ 
       return "post-login_PartnerAdmin"; 
      }else if(name.equals("Shruti") && (password.equals("12345"))){ 
       return "post-login_directCustomerUser"; 
      }else if(name.equals("Umesh") && (password.equals("12345"))){ 
       return "post-login_partnerUser"; 
      } 

      else{ 
       System.out.println("No set of credential found, Please register"); 
      } 
      System.out.println("1" +name); 
      System.out.println("SoX_Admin_Page"); 
      model.addAttribute("username", name); 
      model.addAttribute("message", "Spring Security login + database example"); 
      return "post-login"; 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^