我的任务是使用spring-security概念登录应用程序。
我可以使用Spring安全性登录,但它仅用于“ROLE_ADMIN”(因为我在spring-security.xml中包含了{<user name="Sriram" password="12345" authorities="ROLE_USER" />
)。
因此只有Sriram才能登录该应用程序。现在我的问题是,我应该使用以下凭证(<user name="Yogesh" password="12345" authorities="DIRECT_CUSTOMER" />
)登录该应用程序。这意味着应该为特定用户进行验证。
这意味着,它必须在spring-security.xml中验证登录。
这是我的spring-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>
答案 0 :(得分:1)
是的,验证只发生在spring-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>
您不必评论其他用户。登录时提供凭证和&amp;安全框架将输入的详细信息与<user-service>
标记下的条目进行匹配。
如果有大量用户,您可以创建用户数据库&amp;从<user-service>
标记下的详细信息中获取详细信息。查看this
您可以设置基于角色的访问控制。每个用户都有各自的角色和职责。然后你可以根据角色映射ant样式的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>
具有特定角色的用户只能访问按角色映射的网址。因此,Vignesh无法访问他只能访问/admin**
/user**
答案 1 :(得分:0)
这是我找到的答案。 有效的spring-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";
}