[英]Authorization using Spring Security
我的任务是使用spring-security概念登录到应用程序。 我能够使用Spring安全性进行登录,但是它仅适用于spring-security.xml中的“ ROLE_ADMIN”(因为我已包含( <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>
是的,仅对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>
您不必注释掉其他用户。 只需在登录时提供凭据,安全框架就会将输入的详细信息与<user-service>
标记下的条目进行匹配。
如果有大量用户,则可以在<user-service>
标记下创建用户数据库并从中获取详细信息。 检查一下
您可以设置基于角色的访问控制。 每个用户都有各自的角色,然后您可以根据角色映射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>
具有特定角色的用户将只能访问按角色映射的URL。 因此Vignesh将无法访问url /admin**
他只能访问/user**
在这里我找到了答案。 工作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";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.