- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为扩展 JDBCUserStoreManger 的 WSO2 身份服务器编写自定义用户存储管理器。现在,我的类(class)允许我从 Web 控制台创建新的用户存储管理器,并读取数据库中的所有用户。
我试图覆盖这两个更改密码的方法,但每次尝试都会失败。这是我的错误堆栈跟踪:
[2015-07-23 11:53:09,417] ERROR {org.wso2.carbon.user.mgt.ui.UserAdminClient} - User does not exisit in the user store org.wso2.carbon.user.mgt.stub.UserAdminUserAdminException: UserAdminUserAdminException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:379)
at org.wso2.carbon.user.mgt.stub.UserAdminStub.changePassword(UserAdminStub.java:3824)
at org.wso2.carbon.user.mgt.ui.UserAdminClient.changePassword(UserAdminClient.java:102)
at org.apache.jsp.user.change_002dpasswd_002dfinish_jsp._jspService(org.apache.jsp.user.change_002dpasswd_002dfinish_jsp:102)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
at org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:37)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor$RequestDispatcherAdaptor.include(ContextPathServletAdaptor.java:369)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1015)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:700)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tiles.jsp.context.JspUtil.doInclude(JspUtil.java:87)
at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:88)
at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:82)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:465)
at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:140)
at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:117)
at org.apache.tiles.jsp.taglib.RenderTagSupport.execute(RenderTagSupport.java:171)
at org.apache.tiles.jsp.taglib.RoleSecurityTagSupport.doEndTag(RoleSecurityTagSupport.java:75)
at org.apache.tiles.jsp.taglib.ContainerTagSupport.doEndTag(ContainerTagSupport.java:80)
at org.apache.jsp.admin.layout.template_jsp._jspx_meth_tiles_insertAttribute_7(org.apache.jsp.admin.layout.template_jsp:603)
at org.apache.jsp.admin.layout.template_jsp._jspService(org.apache.jsp.admin.layout.template_jsp:335)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
at org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:30)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor$RequestDispatcherAdaptor.forward(ContextPathServletAdaptor.java:362)
at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:198)at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:185)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:419)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:370)
at org.wso2.carbon.ui.action.ActionHelper.render(ActionHelper.java:52)
at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:101)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
我非常确定更改密码方法中的代码是正确的,因为它非常简单。我没有在 xml 文件上使用任何配置,因为领域和用户存储变量是通过此方法在运行时设置的。
private static void setProperty(String name, String displayName,
String value, String description) {
Property property = new Property(name, value, displayName + "#"
+ description, null);
CUSTOM_UM_OPTIONAL_PROPERTIES.add(property);
}
private static void setMandatoryProperty(String name, String displayName,
String value, String description) {
Property property = new Property(name, value, displayName + "#"
+ description, null);
CUSTOM_UM_MANDATORY_PROPERTIES.add(property);
}
private static void setAdvancedProperty(String name, String displayName,
String value, String description) {
Property property = new Property(name, value, displayName + "#"
+ description, null);
CUSTOM_UM_ADVANCED_PROPERTIES.add(property);
}
还有这个类..
public class SurveyUserStoreMgtDSComponent {
@SuppressWarnings("unused")
private static RealmService realmService;
protected void activate(ComponentContext ctxt) {
SurveyUserStoreManager surveyUserStoreManager = new SurveyUserStoreManager();
ctxt.getBundleContext().registerService(
UserStoreManager.class.getName(), surveyUserStoreManager, null);
}
protected void deactivate(ComponentContext ctxt) {
}
protected void setRealmService(RealmService rlmService) {
realmService = rlmService;
}
protected void unsetRealmService(RealmService realmService) {
realmService = null;
}
}
Web 控制台上的输出与异常消息相同。
有人可以帮助我吗?
谢谢大家!!
1 Câu trả lời
我找到了解决方案..问题是从 doListUsers() 方法开始的。当您覆盖它时,您必须使用它来填充字符串数组:
String[] ret;
Vector users = new Vector<>();
.....
rs = pstmt.executeQuery();
while(rs.next()){
users.add(UserCoreUtil.addDomainToName(rs.getString(2), this.realmConfig.getUserStoreProperty("DomainName")));
}
.....
ret = new String[users.size()];
return users.toArray(ret);
为什么?因为wso2是使用用户名来查找要在数据库内更新的正确记录。更改密码的链接 URL 应如下所示:
所以,这就是解决方案!容易吗?但我想知道是否存在一个明确的指南来准确理解如何定制 wso2。在我看来,目前还没有。
关于java - WSO2 Identity Server - JDBC 上的自定义用户存储管理器 - 更改密码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584433/
Lỗi máy chủ nội bộ: /admin/account/customuser/add/ Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng): Tệp "C:\
Gặp vấn đề! Mặc dù tôi đã tìm thấy các chủ đề gần giống nhau nhưng không có trợ giúp :( Tôi đã viết một tập lệnh php để lấy số lượng người dùng đã đăng ký từ cơ sở dữ liệu MySQL của tôi. Tập lệnh hoạt động tốt trên máy chủ cục bộ của tôi; nó sử dụng tên người dùng, mật khẩu và tên máy chủ đã cho, tương ứng "r
Tôi đang thực hiện một bài tập dựa trên mật khẩu, trong đó tôi có khóa và tin nhắn trong các mảng riêng biệt. Tôi muốn tạo một mảng thứ ba chứa khóa xung quanh kích thước của tin nhắn, như thế này: message keykeyk Tôi đã vật lộn với điều này một thời gian
Một số khách hàng của tôi đã yêu cầu tôi triển khai trình kiểm tra mật khẩu đồ họa, ví dụ. Bạn có ý tưởng nào về cách triển khai giao diện người dùng như vậy không? Câu trả lời hay nhất Hãy thử xem tại đây: https://code.google.com/p/android-lockpattern/
Tôi đang sử dụng MAMP và mỗi lần đăng nhập vào phpMyAdmin, tôi nhận được thông báo lỗi/cảnh báo sau: tệp cấu hình hiện cần mật khẩu bí mật (bl
Tôi đang cố gắng gỡ lỗi trình điều khiển WDF bằng cách kết nối Visual Studio 2013 với máy thử nghiệm của mình. Nó tạo một người dùng có tên WDKRemoteUser và cố gắng đăng nhập tự động khi thử nghiệm. Có người biết mật khẩu của người dùng này
Cam kết sử dụng SVN với tên người dùng và mật khẩu đã chỉ định. Tôi muốn máy chủ báo lỗi để tôi có thể thông báo cho người dùng rằng mật khẩu của họ không đúng. Ngược lại, sau khi cam kết với mật khẩu sai: svn commit "test_file.txt" --use
Tôi đang cố gắng thực hiện các khuyến nghị của bạn bè. Nó bắt đầu bằng nút "bạn". Và tôi muốn tìm nút "Anna". Nói cách khác, đây là người mà hai hoặc nhiều người bạn của tôi đều biết chung. Nút ví dụ ở trên là Anna. Tôi rất biết ơn nếu nhận được sự giúp đỡ của bạn.
Tôi đã thử cả wget --user=myuser --password=mypassword myfile và wget --ftp-user=myuser --ftp-password=mypass
Một trong những người dùng của tôi đã chỉ ra rằng bất cứ khi nào anh ấy cố gắng thêm người dùng mới (auth.User) bằng giao diện quản trị mặc định (admin của Django), tên người dùng và mật khẩu mới sẽ tự động được điền bằng tên người dùng và mật khẩu của anh ấy. Vấn đề là anh ấy yêu cầu Firefox nhớ tên người dùng của anh ấy khi đăng nhập/
Chúng tôi đang phát triển một ứng dụng (tất nhiên rồi) cho mục đích mua hàng trong ứng dụng (IAP). Tôi đã làm mọi thứ trong hướng dẫn để kích hoạt iap và mọi thứ đều hoạt động tốt cho đến khi tôi muốn mua nó. Một phần của mã: MainViewController.m -(vo
Tôi đang cố gắng tạo ra sự kết hợp của hai kết quả khớp tùy chọn (như hiển thị bên dưới), nhưng thay vì một sự kết hợp, tôi sẽ nhận được giao điểm của hai kết quả đó. Tôi nên thay đổi truy vấn này như thế nào để có được sự kết hợp mong muốn? tùy chọn khớp (a:PA)-[r2:mạng*2]-(b:
Tôi muốn sử dụng Ansible như một phần của phần mềm Python khác. Trong phần mềm đó, tôi có danh sách các máy chủ cùng với tên người dùng/mật khẩu của họ. Có cách nào để truyền tên người dùng/mật khẩu cho kết nối SSH tới lệnh Ansible ad-hoc hoặc theo cách được mã hóa không?
Xin chào, tôi gặp lỗi 500 trên máy chủ web Apache của mình khi sử dụng xampp. Lỗi không xuất hiện cho đến khi tôi sử dụng các tệp .htaccess, .htpasswd. Tôi đã tìm kiếm nhưng không tìm thấy lỗi cú pháp. Tôi chỉ có 1 hình ảnh và tệp chỉ mục mà tôi muốn bảo vệ. sau đây
Tôi luôn sử dụng lệnh này để chỉnh sửa thông tin tài khoản người dùng: $this->validate($request, [ 'password' => 'min:6', 'password_confirmation'
Tôi cần cài đặt Dịch vụ Windows C# bằng InstallUtil. Tôi cần thiết lập thông tin đăng nhập dịch vụ (tên người dùng và mật khẩu). Tất cả những điều này cần phải được thực hiện một cách thầm lặng. Có cách nào để thực hiện điều gì đó như thế này không: installutil.exe myserv
Đã đóng. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến một vấn đề lập trình cụ thể, một phần mềm
Nếu tôi có một chuỗi ký tự chữ số ngẫu nhiên dài 16 ký tự (chữ hoa và chữ thường khác nhau) được tạo và lưu trữ cho mỗi người dùng, thì tôi có cần một chuỗi ký tự muối cho toàn trang web không? Nói cách khác, điều này có tốt không? sha1($user_salt . $password)
Tôi đang phát triển một chương trình trống cho phép người dùng tạo tài khoản để họ có thể lưu trữ số dư và thực hiện rút tiền/gửi tiền. Khi người dùng nhập tên người dùng và mật khẩu, tôi phải lưu trữ thông tin này như thế nào để người dùng có thể đăng nhập và xem số dư của mình? Tôi không nhất thiết phải cố gắng làm cho nó siêu an toàn, tôi chỉ muốn
Tôi đang cố gắng tìm phương pháp chung để tìm kiếm một nút hoặc tập hợp nút không có liên kết đến một nút hoặc tập hợp nút khác. Ví dụ, tôi có thể tìm thấy tất cả các nút của một loại cụ thể (ví dụ: Kiểu) được kết nối theo một cách nào đó với một tập hợp các nút cụ thể (ví dụ: Siêu dữ liệuR
Tôi là một lập trình viên xuất sắc, rất giỏi!