Jee*_*ahu 5 web.xml spring-security
使用Spring Security运行应用程序时,我在所有浏览器上都遇到以下错误:
“服务器理解了请求,但拒绝授权”
我尝试通过将“ spring-security.xml”文件中的“角色”从“ ROLE_ADMIN”更改为“ ROLE_USER”。
下面是“ spring-security.xml”
<http auto-config="true">
<intercept-url pattern ="/admin" access = "hasRole('ROLE-USER')"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name = "abc" password = "xyz" authorities="hasRole('ROLE-USER')" />
</user-service>
</authentication-provider>
</authentication-manager>
Run Code Online (Sandbox Code Playgroud)
下面是SpringController类:
@Controller
public class SpringController {
@RequestMapping(value = "/")
public String homePage() {
return "HomePage";
}
@RequestMapping(value="/admin", method=RequestMethod.GET)
public String loginPage() {
return "login";
}
Run Code Online (Sandbox Code Playgroud)
已加载HomePage.jsp和login.jsp页面的属性,但是在login.jsp上传递凭据后出现错误:
HTTP状态403 –禁止
类型:状态报告
消息:访问被拒绝
描述:服务器理解了该请求,但拒绝对其进行授权。
Apache Tomcat / 7.0.90
403 是一个非常通用的错误代码。我面临着同样的问题,但在进行一些更改后,我能够使其工作。仍然不确定问题是否出在密码加密或表单登录标签的配置上。
<security:http auto-config="true" >
<security:intercept-url pattern="/login*" access="isAnonymous()" />
<security:intercept-url pattern="/**" access="isAuthenticated()"/>
<security:form-login login-page="/login" login-processing-url="/login-user" authentication-failure-url="/login?error=true" />
<security:csrf disabled="true" />
<security:logout logout-success-url="/" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" password="{noop}admin" authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider >
</security:authentication-manager>
Run Code Online (Sandbox Code Playgroud)
忽略标签中的security:前缀。
密码前面的{noop}确保我没有对密码使用任何加密。
显示登录 JSP 的控制器
@Controller
@RequestMapping("/login")
public class LoginController {
@RequestMapping(value = { "/", "" }, method = { RequestMethod.GET})
public String login(HttpServletRequest request) {
System.out.println("LoginController.login() "+request.getRequestURI());
return "login";
}
}
Run Code Online (Sandbox Code Playgroud)
形成动作
<form name='loginForm' action="login-user" method='POST'>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4569 次 |
| 最近记录: |