我正在尝试将Spring Security集成到我的Web应用程序中.只要您整合整个身份验证和授权过程,这似乎很容易做到.
但是,身份验证和授权似乎都是如此耦合,以至于我理解如何拆分这些进程并独立于授权进行身份验证是非常耗时的.
身份验证过程在我们的系统外部(基于单点登录),并且无法修改.然而,一旦用户成功完成此过程,它就会加载到会话中,包括角色.
我们试图实现的是将此信息用于Spring Security的授权过程,也就是说,强制它从用户会话中获取角色,而不是通过身份验证提供程序获取角色.
有没有办法实现这个目标?
我要求获取记录的总数和分页.目前我在SQL Server 2012中列出如下所示.这需要一个单独的查询来获取计数.SQL Server 2012中是否有任何改进的方法?
ALTER PROCEDURE dbo.tpGetPageRecords
(
@OffSetRowNo INT,
@FetchRowNo INT,
@TotalCount INT OUT
)
AS
SELECT CSTNO, CSTABBR
FROM DBATABC
WHERE CSTABBR LIKE 'A%'
ORDER BY CSTNO
OFFSET ( @OffSetRowNo-1 ) * @FetchRowNo ROWS
FETCH NEXT @FetchRowNo ROWS ONLY
SET @TotalCount =
(SELECT COUNT(*)
FROM DBATABC
WHERE CSTABBR LIKE 'A%')
GO
Run Code Online (Sandbox Code Playgroud) 我正在打开一个模态弹出窗口.然后我使用访问父窗口文本框和其他属性window.opener.它在Firefox中运行良好,但在IE8中运行不正常.它给出了错误'window.opener is null'.如何访问在两个浏览器中都有效的子窗口中的父窗口属性.
在Oracle中,我有时会想要创建这些构造
SELECT * FROM TABLE(STRINGS('a', 'b', 'c'))
SELECT * FROM TABLE(NUMBERS(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
显然,我可以为上述声明我自己的类型.我可以选择TABLE和VARRAY.例如:
CREATE TYPE STRINGS AS TABLE OF VARCHAR2(100);
CREATE TYPE NUMBERS AS VARRAY(100) OF NUMBER(10);
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,另一种解决方案是编写类似的东西
SELECT 'a' FROM DUAL UNION ALL
SELECT 'b' FROM DUAL UNION ALL
SELECT 'c' FROM DUAL
Run Code Online (Sandbox Code Playgroud)
但是我可能有更复杂的例子,我真的需要一个TABLE/ VARRAYtype.那么如果我的SQL运行在一个我无法创建类型的未知系统上,因为我可能没有必要的资助呢?
所以我的问题是: Oracle是否知道任何Oracle实例上可用的"匿名" TABLE/ VARRAY类型?类似于Postgres/H2/HSQLDB的简单ARRAY类型?
更新:如果这是相关的,我主要是从Java运行这个SQL.不需要向我解释PL/SQL,我只是在寻找匿名的SQL数组类型(即"匿名" 独立存储类型).如果它们根本不存在,答案是否定的
我最近改变了我的模式所以我的类继承自超类,问题是我的比较方法生成审计日志,使用Java反射,现在只循环子类的字段,而不是超类,是有办法获得所有的FIELDS?还是我需要把它投入超级班......?
以下是我的方法:
public static <T> String GenerateChangeLogForEntity(T old, T updated) {
String text = "";
try {
Field[] fields = old.getClass().getDeclaredFields();
if(fields != null) {
BaseController.getLogger().info("Z1 num fields:"+fields.length);
for (Field field : fields) {
if(field.isAnnotationPresent(Column.class)) {
String fieldName = field.getName();
BaseController.getLogger().info(field.getName());
if(field.isAnnotationPresent(Variation.class)) {
Variation v = field.getAnnotation(Variation.class);
fieldName = v.friendlyName();
}
field.setAccessible(true);
if(field.get(old) != null && field.get(updated) != null) {
if(!(field.get(old)).equals(field.get(updated))) {
text += "<p><span class=\"field-name\">"+fieldName+"</span> changed from: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(old))+"</strong> to: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(updated)) + "</strong></p>";
}
}
if(field.get(old) == null && field.get(updated) …Run Code Online (Sandbox Code Playgroud) 以下查询在几乎每个数据库(提供或获取虚拟表)中都非常有效dual,包括Oracle:
select 'A' as x from dual union all
select 'B' from dual
order by x asc
Run Code Online (Sandbox Code Playgroud)
返回:
| X |
|---|
| A |
| B |
Run Code Online (Sandbox Code Playgroud)
现在这个查询仍然是非常标准的SQL,但不适用于Oracle
select 'A' as x from dual union all
select 'B' from dual union all
select 'C' from dual
order by x asc
Run Code Online (Sandbox Code Playgroud)
我越来越
ORA-00904: "X": invalid identifier
Run Code Online (Sandbox Code Playgroud)
但是,这有效:
select 'A' as x from dual union all
select 'B' as x from dual union all …Run Code Online (Sandbox Code Playgroud) 我正在处理一个 graphql 问题,在该问题中我收到请求的以下错误
{
customer(id: "5ed6092b-6924-4d31-92d0-b77d4d777b47") {
id
firstName
lastName
carsInterested
}
}
"message": "Validation error of type SubSelectionRequired: Sub selection required for type null of field carsInterested @ 'customer/carsInterested'",
Run Code Online (Sandbox Code Playgroud)
下面是我的架构
type Customer {
id: ID!
firstName: String!
lastName: String!
# list of cars that the customer is interested in
carsInterested: [Car!]
}
type Query {
# return 'Customer'
customer(id: ID!): Customer
}
Run Code Online (Sandbox Code Playgroud)
我确实有一个 CustomerResolver,里面有函数 carsInterested。它看起来如下
@Component
public class CustomerResolver implements GraphQLResolver<Customer> {
private final CarRepository carRepo;
public CustomerResolver(CarRepository carRepo) …Run Code Online (Sandbox Code Playgroud) 我需要一种从列表中删除项目的有效方法.如果发生某些情况,我需要从列表中删除第一个'n'个元素.有人可以建议最好的方法吗?请记住:性能是我的一个因素,所以我需要一种比itterating更快的方法.谢谢.
我正在考虑一种方法,通过这种方式可以将第n个项目作为列表的开头,以便0-n项目将被垃圾收集.可能吗?
许多SQL数据库支持SQL标准所称的内容<derived column list>.此类数据库至少包括CUBRID,Derby,Firebird,HSQLDB,Postgres,SQL Server和Sybase SQL Anywhere.SQL:2008规范中的(简化)摘录
7.6 <table reference>
Format
<table reference> ::=
<table or query name> [ [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ] ]
| <derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
Run Code Online (Sandbox Code Playgroud)
这意味着,我可以表达这些内容(例如在Postgres中,这是非常符合标准的)
-- Rename a <table or query name> to u(b)
with t(a) as (select 1)
select * from t as u(b)
-- Rename a <derived table> to u(b) …Run Code Online (Sandbox Code Playgroud) 假设以下API:
package nashorn.test;
public class API {
public static void test(String string) {
throw new RuntimeException("Don't call this");
}
public static void test(Integer... args) {
System.out.println("OK");
}
}
Run Code Online (Sandbox Code Playgroud)
以下Nashorn JavaScript代码段将失败:
var API = Java.type("nashorn.test.API");
API.test(1);
Run Code Online (Sandbox Code Playgroud)
将调用第一种方法而不是第二种方法.这是Nashorn引擎中的一个错误吗?
为了记录,此问题先前已在jOOQ用户组上报告,其中方法重载和varargs被大量使用,并且此问题可能会导致很多麻烦.
可能有人怀疑这可能与拳击有关.它没有.当我这样做时,问题也出现了
public class API {
public static void test(String string) {
throw new RuntimeException("Don't call this");
}
public static void test(Integer... args) {
System.out.println("OK");
}
public static void test(MyType... args) {
System.out.println("OK");
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public class MyType {
}
Run Code Online (Sandbox Code Playgroud)
然后: …
java ×3
oracle ×3
sql ×3
javascript ×2
arrays ×1
audit ×1
graphql ×1
graphql-java ×1
java-8 ×1
list ×1
mysql ×1
nashorn ×1
oop ×1
oracle11g ×1
pagination ×1
reflection ×1
session ×1
sql-order-by ×1
sql-server ×1
union-all ×1