我有4组:管理员,服务,用户,访客,管理员是在数据库中创建的,第一次管理员登录需要更改密码,我想重定向到表单更改密码,我想重定向到表单更改密码,我在onAuthFailure中设置了重定向,但是服务,用户,访客在某些操作中没有验证和重定向更改密码表单,有一个好主意,请告诉我,我应该为每个角色重定向其他链接?,我只是在2天内阅读了关于死锁的文档,我不能理解更多,对不起我的英语。
谢谢。
发布于 2016-08-09 19:08:52
在DeadboltHandler实现中,onAuthFailure方法可以使用getSubject来获取当前用户,并通过该use获取用户所拥有的角色。
public class MyDeadboltHandler implements DeadboltHandler {
private final DeadboltExecutionContextProvider executionContextProvider;
private final DeadboltAnalyzer analyzer;
@Inject
public MyDeadboltHandler(final ExecutionContextProvider ecProvider,
final DeadboltAnalyzer analyzer) {
this.executionContextProvider = ecProvider.get();
this.analyzer =analyzer;
}
public CompletionStage<Result> onAuthFailure(Http.Context context,
Optional<String> content) {
final ExecutionContext executionContext = executionContextProvider.get();
final ExecutionContextExecutor executor = HttpExecution.fromThread(executionContext);
return getSubject(context).thenApplyAsync(maybeSubject ->
maybeSubject.map(subject -> analyzer.hasRole(maybeSubject, "admin") ? /*go to admin section*/
: /*go to non-admin section*/)
.orElseGet(() -> /*no user present*/),
executor);
}
// other methods
}在这个例子中有注释的地方,比如/*go to admin section*/,你需要用一个Result来替换它。
在DeadboltAnalyzer中还有其他可用的方法,因此如果需要,您可以进行比analyzer.hasRole(maybeSubject, "admin")更复杂的检查。
https://stackoverflow.com/questions/38848416
复制相似问题